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