从Visual Studio中的ctypes进行远程DLL调试

问题描述

我正在使用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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...