如何转储Perl程序使用的机器指令

R.D*_*R.D 0 perl

两个相关的问题

  1. 运行程序后,如何查看执行的机器代码?
  2. 此外,perl执行是否将整个pl及其模块转换为机器代码或仅执行它的部分?

dao*_*oad 10

Perl是一种解释性语言.更详细地了解Perl如何工作表明perl具有编译器的一些功能,一些解释器.有关更多信息,请参阅perlrun简介perlguts编译器部分.

Perl被编译成一组操作码,这些操作码由作为perl二进制文件一部分的虚拟机执行.您可以使用B :: Concise等工具查看这些操作码.

如果你想看到实际的处理器特定指令,你将不得不做一些严肃的黑魔法.您可以在配置为记录给定可执行文件执行的所有指令的特殊虚拟机上运行perl.

另一种可能的方法是使用B :: C创建Perl脚本的已编译C版本.然后,您可以检查本机编译的代码.

  • [strace](http://en.wikipedia.org/wiki/strace)/ [DTrace](http://en.wikipedia.org/wiki/dtrace)也很有帮助.他们在系统调用级别上工作. (2认同)