【发布时间】:2019-10-01 10:12:31
【问题描述】:
我正在使用 ctypes 从 Python 调用的 Visual Studio 中编写 C++ DLL。调用函数并返回结果就可以了。但是,我还没有弄清楚如何在从 Python 调用 C++ 代码时对其进行调试。我做了一件显而易见的事情,即开始调试 Python 代码(目前使用 PyScripter,但这并不是一成不变的),然后将 VS 调试器附加到 Python 进程。我还检查了 TaskManager 中的进程 ID,以确保我附加到正确的进程。这似乎有效,即 VS 没有抱怨,C++ 代码中的断点保持完整的红点(意味着可以命中断点),并且调试菜单中的“分离...”命令处于活动状态。然而,当 Python 最终调用其中一个 C++ 函数时,not 命中了断点。该函数返回正确的结果,但执行不在断点处停止。有没有人有这方面的经验,可以帮助我?谢谢!
【问题讨论】:
-
你确定你用调试符号编译了你的dll(我认为这是你需要做的事情)?
-
我刚刚验证过,是的,我确实生成了符号
-
确保在附加时选择“Native”。 VS 尝试自动检测并附加为 Python 调试器,而不是在较新的版本中(我认为是从 2017 年开始)。
-
在你想中断的地方抛出一个未处理的异常。看看这是否可行:^) 我一直在用 Python 调试 C++ DLL,你所描述的应该可以工作。特别是。如果断点解决(红点)。优化关闭了吗?有时代码在优化后不会执行预期的流程。
标签: python c++ visual-studio debugging ctypes