问题描述
我正在使用c ++为python创建一个dll,并使用ctypes库导入函数。 我知道要进行远程调试,请转至Debug-> Attach to Process。 在调用导入函数之前,我在python代码中设置了一个断点,但是我不知道要附加哪个进程。我尝试附加到python.exe,但这没用。
我应该附加哪个过程,或者需要以不同的方式进行远程调试? 谢谢
解决方法
需要附加的进程是需要调用dll的进程。如果要远程调试dll,建议您参考有关Remote Debugging a C++ Project in Visual Studio
的{{3}}。另外,您可以参考关于Debug DLLs in Visual Studio
的{{3}}。
我建议您可以查看模块窗口。有几个link:
1。此文档未加载任何符号 转到“模块”窗口(“调试”>“ Windows”>“模块”),然后检查模块是否已加载。
- 如果模块已加载,请检查“符号状态”列以查看 符号是否已加载。
a。如果未加载符号,请检查符号状态以诊断问题。从“模块”窗口中模块的上下文菜单中,单击“符号加载信息...”,以查看调试器尝试加载符号的位置。有关加载符号的更多信息,请参见指定符号(.pdb)和源文件。
b。如果加载了符号,则PDB不包含有关您的源文件的信息。这些是一些可能的原因:
如果您的源文件是最近添加的,请确认正在加载模块的最新版本。
可以使用/ PDBSTRIPPED链接器选项创建剥离的PDB。剥离的PDB不包含源文件信息。确认您使用的是完整的PDB,而不是剥离的PDB。 PDB文件已部分损坏。删除文件并执行模块的干净构建以尝试解决该问题。
- 如果未加载模块,请检查以下内容以查找原因:
a。确认您正在调试正确的过程。
b。检查是否正在调试正确的代码。您可以在“进程”窗口中找到调试器配置为调试的代码类型(“调试”>“ Windows”>“进程”)。例如,如果您要调试C#代码,请确认已将调试器配置为适用于.NET的适当类型和版本(例如,托管(v4 *)与托管(v2 * / v3 *)与托管(CoreCLR) )。
2.…当前的源代码与内置的版本不同。
您可以转到Debug > Options and Settings
。在Debugging/General
页上,清除Require source files that exactly match the original version
选项。完成调试后,请确保重新启用此选项。
此外,可能是dll尚未加载到.exe中。您可以设置Properties->Debugging->Working Directory
。