在Windows7上,我有一个使用Windows公共语言运行时(CLR)的Windows DLL的python脚本。其中一个使用的DLL内部发生错误,但标准Python调试器仅在Python代码级别(而不是DLL)上进行调试。
如何调试DLL内部的内容?
答案 0 :(得分:9)
如果您有Microsoft Visual Studio,
1)打开您的DLL所属的Visual Studio项目(或创建一个新项目)。
2)如果您已设置DLL进行调试(您已使用调试信息构建它,并且它将是您的python程序将使用的那个),则可以在DLL代码中设置断点。 / p>
3)像平常一样启动要调试的程序。
4)返回Visual Studio IDE并转到Debug
菜单。选择Attach to Process
选项。然后,您将获得所有正在运行的进程的列表。
5)选择要调试的进程,即python程序或运行程序的运行时。
6)坐下来等待其中一个断点被击中,或者您可以从“调试”菜单中尝试Break All
暂时停止该程序。
这是开始调试python程序的一般方法,但是需要调试程序正在使用的DLL的任何程序。
请注意,如果您自己使用调试信息构建了DLL并且python应用程序正在使用它,则上述建议最有效。如果它是没有源代码的第三方DLL,您仍然可以从Visual Studio进行调试,但需要知道汇编语言(因为源代码通常不可用)。
答案 1 :(得分:0)
使用pythonnet的这3个调试方案基于PTVS文档:
https://github.com/pythonnet/pythonnet/wiki/Various-debugging-scenarios-of-embedded-CPython