如何记录由Python程序执行的CPU指令?

时间:2018-09-25 15:44:12

标签: python assembly reverse-engineering

我知道Python源代码被编译成字节码,然后由Python VM(比如CPython)解释。如果我理解正确,则意味着VM解析字节码指令并(在运行时)决定应相应执行哪些CPU指令。

我的问题:

  • 由于解释了特定的Python文件(.py),是否可以记录在计算机上执行的实际CPU指令?我知道在.py文件和CPU指令之间获得1-1对应关系可能并不简单(甚至不可行),但是最接近的是什么?
  • 要进一步:甚至可以记录与特定过程相对应的已执行指令吗?

1 个答案:

答案 0 :(得分:3)

在Linux上使用strace,它将显示任何程序(包括python)进行的每个系统调用。在Windows上,您必须使用wtLogger.exe之类的东西来跟踪所有库调用(而不仅仅是系统)。

您可以使用gdb之类的调试器来实时查看机器代码,并且由于您具有CPython源代码,因此更好的选择是仅使用调试符号进行编译,然后在C调试器中运行它,可以为您提供高级调用堆栈,这将更容易理解。