Visual Studio 中的 ctypes 远程 DLL 调试
Remote DLL Debugging from ctypes in Visual Studio
我正在使用 c++ 为 python 制作一个 dll,并使用 ctypes 库导入函数。
我知道要进行远程调试,您需要转到“调试”->“附加到进程”。
我在调用导入函数之前在 python 代码中放置了一个断点,但我不知道要附加到哪个进程。我尝试附加到 python.exe,但没有成功。
我应该附加到哪个进程,或者我是否需要以不同的方式进行远程调试,如果是,那么如何?
谢谢
需要附加的进程就是需要调用dll的进程。如果你想远程调试dll,我建议你可以参考这篇关于Debug DLLs in Visual Studio
.
的link about Remote Debugging a C++ Project in Visual Studio
. Also, you could refer to this link
我建议您可以查看模块 windows。有几个situations:
1.No 已为此文档加载符号
转到模块 window(调试 > Windows > 模块)并检查你的模块是否已加载。
- 如果您的模块已加载,请检查“符号状态”列以查看
符号是否已加载。
a.If 符号未加载,请检查符号状态以诊断问题。从模块 window 中某个模块的上下文菜单中,单击符号加载信息...以查看调试器尝试加载符号的位置。有关加载符号的详细信息,请参阅指定符号 (.pdb) 和源文件。
b.If 符号已加载,PDB 不包含有关您的源文件的信息。这些是一些可能的原因:
如果您的源文件是最近添加的,请确认正在加载模块的 up-to-date 版本。
可以使用 /PDBSTRIPPED 链接器选项创建剥离的 PDB。剥离的 PDB 不包含源文件信息。确认您使用的是完整的 PDB 而不是剥离的 PDB。
PDB 文件已部分损坏。删除文件并执行模块的干净构建以尝试解决问题。
- 如果您的模块未加载,请检查以下内容以查找原因:
a.Confirm 您正在调试正确的进程。
b.Check 查看您正在调试的代码类型是否正确。您可以在进程 window(调试 > 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
.
我正在使用 c++ 为 python 制作一个 dll,并使用 ctypes 库导入函数。 我知道要进行远程调试,您需要转到“调试”->“附加到进程”。 我在调用导入函数之前在 python 代码中放置了一个断点,但我不知道要附加到哪个进程。我尝试附加到 python.exe,但没有成功。
我应该附加到哪个进程,或者我是否需要以不同的方式进行远程调试,如果是,那么如何? 谢谢
需要附加的进程就是需要调用dll的进程。如果你想远程调试dll,我建议你可以参考这篇关于Debug DLLs in Visual Studio
.
Remote Debugging a C++ Project in Visual Studio
. Also, you could refer to this link
我建议您可以查看模块 windows。有几个situations:
1.No 已为此文档加载符号 转到模块 window(调试 > Windows > 模块)并检查你的模块是否已加载。
- 如果您的模块已加载,请检查“符号状态”列以查看 符号是否已加载。
a.If 符号未加载,请检查符号状态以诊断问题。从模块 window 中某个模块的上下文菜单中,单击符号加载信息...以查看调试器尝试加载符号的位置。有关加载符号的详细信息,请参阅指定符号 (.pdb) 和源文件。
b.If 符号已加载,PDB 不包含有关您的源文件的信息。这些是一些可能的原因:
如果您的源文件是最近添加的,请确认正在加载模块的 up-to-date 版本。
可以使用 /PDBSTRIPPED 链接器选项创建剥离的 PDB。剥离的 PDB 不包含源文件信息。确认您使用的是完整的 PDB 而不是剥离的 PDB。 PDB 文件已部分损坏。删除文件并执行模块的干净构建以尝试解决问题。
- 如果您的模块未加载,请检查以下内容以查找原因:
a.Confirm 您正在调试正确的进程。
b.Check 查看您正在调试的代码类型是否正确。您可以在进程 window(调试 > 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
.