Pydev - 附加到python_d进程(Python调试版本)不起作用

时间:2017-03-31 21:39:19

标签: debugging pydev

在Windows 7上,我有带有Liclipse / PyDev的Eclipse Neon(4.6.3),我使用的是Python 2.7.13的自定义64位调试版本(python_d.exe,使用pcbuild.sln使用Visual Studio构建) 。在大多数情况下,Python的这个调试版本与PyDev一起工作 - 我可以将它配置为解释器并进行运行/调试会话。但是,“附加到进程”功能不起作用。如果我在系统上某处运行“python_d”进程并在PyDev中尝试“附加到进程”,则会发生以下情况:

  • “过程输出”对话框窗口显示以下内容:

Connecting to 64 bits target Injecting dll Dll injected Allocating code in target process Writing code in target process Allocating return value memory in target process Injecting code to target process Waiting for code to complete Attach finished successfully. [127156 refs] Process finished with exitValue: 0

  • 出现Windows崩溃对话框,说:“python_d.exe已停止工作”
  • 我尝试附加的“python_d”进程在其输出中收到此消息,然后崩溃:Fatal Python error: UNREF invalid object

相比之下,当我使用常规安装的Python版本(我在PyDev中将其配置为单独的解释器)时,附加机制可以正常工作。

Python的调试版本是否应该与PyDev调试器附加机制一起使用?这是PyDev中的一个错误吗? PyDev可能不正确地使用了一个只应该与Python的Release版本一起使用的DLL吗? PyDev是否需要以不同的方式从源代码构建,以便为此目的支持Python的调试版本?

1 个答案:

答案 0 :(得分:0)

实际上不支持调试版本(Python ABI在发布版本的调试方面有所不同,附加的代码是作为期望Python版本发布的dll提供的。)

作为一个注释,它的代码存在于https://github.com/fabioz/PyDev.Debugger/tree/master/pydevd_attach_to_process/dll - 如果你真的觉得这是必须的,你可以尝试改变它以使用Python的调试版本。

最具体地说,https://github.com/fabioz/PyDev.Debugger/blob/master/pydevd_attach_to_process/dll/python.h可能需要针对调试版本进行调整。