The following are examples of rb_flow.d.
This is a simple script to trace the flow of Ruby functions.
Here it traces the example program, Code/Ruby/func_abc.rb
# rb_flow.d
C TIME(us) FILE -- CLASS::METHOD
0 3066417516583 func_abc.rb -> Module::method_added
0 3066417516640 func_abc.rb <- Module::method_added
0 3066417516658 func_abc.rb -> Module::method_added
0 3066417516668 func_abc.rb <- Module::method_added
0 3066417516680 func_abc.rb -> Module::method_added
0 3066417516689 func_abc.rb <- Module::method_added
0 3066417516701 func_abc.rb -> Object::func_a
0 3066417516711 func_abc.rb -> Object::print
0 3066417516730 func_abc.rb -> IO::write
0 3066417516832 func_abc.rb <- IO::write
0 3066417516841 func_abc.rb <- Object::print
0 3066417516849 func_abc.rb -> Object::sleep
0 3066418520705 func_abc.rb <- Object::sleep
0 3066418520727 func_abc.rb -> Object::func_b
0 3066418520744 func_abc.rb -> Object::print
0 3066418520753 func_abc.rb -> IO::write
0 3066418520796 func_abc.rb <- IO::write
0 3066418520805 func_abc.rb <- Object::print
0 3066418520813 func_abc.rb -> Object::sleep
0 3066419530803 func_abc.rb <- Object::sleep
0 3066419530825 func_abc.rb -> Object::func_c
0 3066419530842 func_abc.rb -> Object::print
0 3066419530852 func_abc.rb -> IO::write
0 3066419530893 func_abc.rb <- IO::write
0 3066419530902 func_abc.rb <- Object::print
0 3066419530910 func_abc.rb -> Object::sleep
0 3066420540804 func_abc.rb <- Object::sleep
0 3066420540822 func_abc.rb <- Object::func_c
0 3066420540831 func_abc.rb <- Object::func_b
0 3066420540840 func_abc.rb <- Object::func_a
^C
The fourth column is indented by 2 spaces to show when a new function begins.
This shows which function is calling which - the output above begins by adding
new methods, then showing that func_a began; did some print IO; slept, and
returned from sleep; and then called func_b.
The TIME(us) column shows time from boot in microseconds.
The FILE column shows the file that was being executed.
If the output looks illogical, check the CPU "C" column - if it changes,
then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for
details and suggested workarounds.
See Notes/ALLflow_notes.txt for important notes about reading flow outputs.