如何在VisualStudio中调试我使用ctypes从Python调用的DLL? < >我在VisualStudio中编码C++ DLL,我使用CyType调用Python。调用函数并返回结果效果很好。不过,我还没有找到如何调试Pcthon代码时的C++代码。我做了一件显而易见的事情,即开始调试Python代码(目前使用PyScripter,但这不是一成不变的),然后将VS调试器附加到Python进程。我还检查了TaskManager中的进程ID,以确保连接到正确的进程。这似乎是有效的,即VS不抱怨,C++代码中的断点保持完整的红点(意味着断点可以命中),并且调试菜单中的“分离…”命令是活动的。但是,当Python最终调用一个C++函数时,断点不会被击中。函数返回正确的结果,但执行不会在断点处停止。有谁有这方面的经验,可以帮助我吗?谢谢

如何在VisualStudio中调试我使用ctypes从Python调用的DLL? < >我在VisualStudio中编码C++ DLL,我使用CyType调用Python。调用函数并返回结果效果很好。不过,我还没有找到如何调试Pcthon代码时的C++代码。我做了一件显而易见的事情,即开始调试Python代码(目前使用PyScripter,但这不是一成不变的),然后将VS调试器附加到Python进程。我还检查了TaskManager中的进程ID,以确保连接到正确的进程。这似乎是有效的,即VS不抱怨,C++代码中的断点保持完整的红点(意味着断点可以命中),并且调试菜单中的“分离…”命令是活动的。但是,当Python最终调用一个C++函数时,断点不会被击中。函数返回正确的结果,但执行不会在断点处停止。有谁有这方面的经验,可以帮助我吗?谢谢,python,c++,visual-studio,debugging,ctypes,Python,C++,Visual Studio,Debugging,Ctypes,的文档页对此进行了详细说明,但简短的版本是: 当你有一个项目 打开项目属性,切换到“调试”选项卡,然后选择“启用本机代码调试”。现在,当您按下F5时,您将处于一种模式,可以自然地调试Python和C/C++代码 当您附加到正在运行的进程时 在附加之前,单击“选择”按钮以选择调试引擎。您需要同时选择本机和Python(默认情况下,如果在过程中检测到Python,则只选择Python) 您确定用调试符号编译了dll(我认为这是您需要做的事情)?我刚刚验证过,是的,我确实生成了符号确保在附加时选择“本

的文档页对此进行了详细说明,但简短的版本是:

当你有一个项目 打开项目属性,切换到“调试”选项卡,然后选择“启用本机代码调试”。现在,当您按下F5时,您将处于一种模式,可以自然地调试Python和C/C++代码

当您附加到正在运行的进程时 在附加之前,单击“选择”按钮以选择调试引擎。您需要同时选择本机和Python(默认情况下,如果在过程中检测到Python,则只选择Python)


您确定用调试符号编译了dll(我认为这是您需要做的事情)?我刚刚验证过,是的,我确实生成了符号确保在附加时选择“本机”。VS尝试在较新的版本中自动检测并作为Python调试器附加(我想从2017年开始)。在您想要中断的地方抛出一个未处理的异常。看看它是否有效:^)我用Python一直调试C++ DLL,你所描述的应该工作。特别是断点解析时(红点)。优化停止了吗?有时,如果代码经过优化,它就不会执行预期的流。