在Windows7上,我有一个使用Windows DLL的Python脚本,使用.NET公共语言运行时(CLR)。 一个使用的DLL内部发生错误,但标准的Pythondebugging器只能在Python代码级(而不是DLL)上进行debugging。
我怎样才能debuggingDLL(S)内发生了什么?
CLR如何实现COM实现的二进制互操作级别? 还是不?
用breakpad创buildCLR转储
.NET运行时(CLR),JIT编译器位于何处?
.NET CLR性能计数器丢失
一个线程可以在临界区中被抢占吗?
如果您有Microsoft Visual Studio可用,
1)打开您的DLL所属的Visual Studio项目(或创建一个新项目)。
2)如果你已经建立了你的DLL进行调试(你已经用调试信息构建了它,它将是你的python程序将使用的那个),你可以在DLL代码中设置断点。
3)按照正常的方式启动要调试的程序。
4)返回到Visual Studio IDE并转到Debug菜单。 选择Attach to Process选项。 您将获得所有正在运行的进程的列表。
5)选择你想要调试的进程,这将是你的Python程序,或运行你的程序的运行时。
6)坐下来等待你的某个断点被击中,或者你可以尝试从Debug菜单中选择Break All来暂停程序。
这是一个开始不仅调试python程序,而且还需要调试程序正在使用的DLL的程序的一般方法。
请注意,如果您使用调试信息自己构建了DLL并且正在被Python应用程序使用,那么上述建议的效果最好。 如果它是没有源代码的第三方DLL,那么仍然可以从Visual Studio进行调试,但需要知道汇编语言(因为源代码通常不可用)。
这三个pythonnet的调试场景都基于PTVS文档:
https://github.com/pythonnet/pythonnet/wiki/VarIoUs-debugging-scenarios-of-embedded-cpython
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。