Using DTrace with RubyMotion

Want to profile or analyze your RubyMotion application? How to use Instrument with motion
is not yet known, but you can always use powerful DTrace to do that.

Turns out running DTrace in RubyMotion is exactly same as that in MacRuby (no surprise!).
motion-dtrace is a proof of concept to simplify running dtrace with your app.

Installation

gem install motion-dtrace  

Usage

Edit the Rakefile of your RubyMotion project and add the following require line.

require 'rubygems'  
require 'motion-dtrace'  

Start simulator process:

rake  

On another terminal, start dtrace:

rake dtrace  

When you terminate the app, you get a trace similar to following:

                         CLASS#METHOD                          TOTAL TIME ┬Ásec
--------------------------------------------------------------------------------
                       CGPoint#y=:                             3
                        String#nil?                            3
                         Array#last                            4
                        CGRect#origin                          4
                Evernote::Note#title                           4
                          Hash#empty?                          4
                          ........
                         Class#all:                            19867
                       UIImage#thumbnail                       24226
                  DTWebArchive#thumbnail                       24415
                      ClipItem#thumbnail                       24451
                    __NSArrayM#each                            24717
          ClipperTableViewCell#item=:                          25143

Extra

You may specify your own dtrace file via:

rake dtrace DTRACE=/Users/siuying/Documents/workspace/motion/motion-dtrace/dtrace/methods_duration.d  

TODO

Currently this gem is just a hack to simplify command lines.

We shall investigate can we do real integration with project.

Credit