RubyVM is (as noted) very VM dependent. Currently it is defined only for 1.9.x MRI.
Available on 1.9 only, this is basically a wrapper for yarv.
>> class A; def go; end; end >> b = A.new.method(:go) => # >> print RubyVM::InstructionSequence.disassemble b == disasm: ======================= 0000 trace 8 ( 1) 0002 putnil 0003 trace 16 ( 1) 0005 leave
I believe those trace methods represent calls to any Kernel#set_trace_func (or the C sibling to that ruby method).
Also note that with 1.9.2 you can pass in a proc.