在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
Fatal Python error: UNREF invalid object
相比之下,当我使用常规安装的Python版本(我在PyDev中将其配置为单独的解释器)时,附加机制可以正常工作。
Python的调试版本是否应该与PyDev调试器附加机制一起使用?这是PyDev中的一个错误吗? PyDev可能不正确地使用了一个只应该与Python的Release版本一起使用的DLL吗? PyDev是否需要以不同的方式从源代码构建,以便为此目的支持Python的调试版本?
答案 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可能需要针对调试版本进行调整。