跳转到内容

Ruby 编程/参考/对象/RubyVM

来自维基教科书,开放的书,开放的世界

RubyVM 非常依赖于 VM(如上所述)。目前仅针对 1.9.x MRI 定义。

RubyVM::InstructionSequence.disassemble

[编辑 | 编辑源代码]

仅在 1.9 上可用,这基本上是 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

我相信这些跟踪方法代表对任何 Kernel#set_trace_func(或该 ruby 方法的 C 对应项)的调用。

还要注意,使用 1.9.2,您可以传递一个 proc。

华夏公益教科书