【问题标题】:Installing Python debug symbols for Visual Studio为 Visual Studio 安装 Python 调试符号
【发布时间】:2021-08-17 08:54:39
【问题描述】:

我的最终目标是调试一个 Python 脚本,该脚本调用我自己用 C++ 编写的 COM dll。在 MS Visual Studio Community 2019 中使用 Python 3.8。

我的主要问题是调试。 MSVC 不断要求 Python38.dll 的调试符号,并且未能命中断点。

在我的 Python 项目调试属性中,如果不选中“启用本机代码调试”,那么我的 Python 会在我设置的断点处正确运行和停止。 COM dll 在断言上失败(这是我正在尝试调试的内容),我可以选择“重试调试”...但没有任何反应,我的 python 代码结束 (The program 'python3.8.exe' has exited with code -1 (0xffffffff).)

如果我勾选“启用本机代码调试”,程序会忽略我的 Python 断点,并弹出此窗口:

如果我选择“关闭”,则 Visual Studio 开始运行 Python 脚本(没有遇到任何 Python 脚本断点),断言被命中,选择“重试”会在有问题的行打开我的 C++ 代码(至少在一定程度上有所帮助)。如果从 Excel 中的 VBA 驱动,相同的 COM dll 工作正常,所以我怀疑我在通过 win32com.client 传递参数时遇到问题,所以我想检查 dll 是否正在接收我认为我发送的内容:因此需要调试.

如果我执行“打开符号设置对话框”,我会得到:

您可以在其中看到我已按照他们网站上的 MS 说明进行操作,并使用 Python 3.8 安装程序来安装符号。目录 C:\Program Files\Python38 确实包含 python38.pdb。我怀疑 Visual Studio 正在从其他地方加载 python?我是否将符号安装在错误的位置?

我希望能够单步执行我的 Python 代码(在标记的地方点击断点),并在 C++ 代码中点击断点。这可能吗?如果可以,我该如何设置我的 Visual Studio 以与 Python 3.8 完美配合?

【问题讨论】:

    标签: python c++ visual-studio debugging


    【解决方案1】:

    如果有人确实解决了这个问题,那么对我有用的解决方案是:

    • 请注意不支持调试 Python 3.8 的 MSVC 警告
    • 从 python.org 为所有用户卸载/重新安装 Python 3.7(因此到 C:\Program Files\Python37),指定我想要符号(自定义安装)
    • 确保 PYTHONPATH 设置为 C:\Program Files\Python37
    • 在 Visual Studio 中将全局默认环境更改为 Python 3.7
    • 将 C:\Program Files\Python37 添加到符号搜索路径(调试选项)
    • 将我需要的所有包重新添加到 3.7 环境中

    当我现在从 VS 运行 python 脚本时,我可以看到命令窗口有 C:\Program Files\Python37\python37.exe

    现在检查“启用本机代码调试”不仅会命中我的 Python 断点,还会命中我的 C++ 中的任何断点(当文件打开时)。

    美中不足的是,调试器会花费很长时间为所有单独的 python 包加载符号。我已经尝试指定我只想要我的 COM dll 的符号,但无济于事。我启动 Debugger,然后浏览 SO,查看 Q&A,直到一段时间后遇到第一个断点...

    如果有人对此有解决办法,我很乐意听到。

    【讨论】:

      猜你喜欢
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 2018-05-06
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      相关资源
      最近更新 更多