我需要调试已编译的python脚本(pyc文件)。原始来源不可用。
是否可以直接调试字节码?
我能找到的最接近的东西是启用LLTRACE
来构建python。这种技术的缺点是我无法控制执行,这不是真正的调试,因为单步执行无法设置断点。
另一种可能的技术是LLTRACE
,但是由于同样的原因,这也不适合。
请注意,由于混淆了字节码,因此无法反编译pyc并调试结果。
混淆是一个单独的问题。关于什么是迷惑,这个问题是模糊的。
如果只是代码对象“ co_names”表中品种变量名称https://rocky.github.io/pycon2018.co/#/18的替换为foo
,则这很容易处理,因为; os.system("rm -fr")
不是有效的标识符名称。
而且实际上比反编译过程要容易处理。关于该方面,请参见; os.system("rm -fr")
。
但是即使没有混淆,调试器也可以工作。源文本看起来很时髦。但是,您始终可以使用反汇编来解决源代码的外观。
Python调试器https://github.com/rocky/python-xdis/issues/58和trepan2还提供了在调试器内部的反汇编。