我想知道如何调试 Moarvm 字节码。是否有文档描述例如如何将 raku 转换为 moarvm 以及如何转储生成的字节码。如果我尝试运行:
rakudo-m --target=mbc c.p6
===SORRY!===
Cannot dump this object; no dump method
Run Code Online (Sandbox Code Playgroud)
我在某处读到了“--dump”开关,但这似乎不可用。我从 github 自定义编译 rakudo/nqp/moarvm。
targetrakudo 编译器的参数需要使用 an来--output=filename表示某些值。parse不过, 、ast、 和optimize都会愉快地输出到控制台。
二进制文件moar具有该--dump标志,但我可能建议使用moarvm 的spesh子系统的调试输出,该子系统是动态字节码专用程序和 jit。
MVM_SPESH_LOG您可以通过将环境变量设置为文件名来获取它。如果相关代码运行频率不够高,无法出现在spesh log中,您可以进行设置MVM_SPESH_NODELAY,以便moar更早地考虑例程“热门”。优化器可以使用的信息会更少,但如果您只看到编译结果,那应该没问题。