【问题标题】:Debugging embedded Python调试嵌入式 Python
【发布时间】:2020-08-24 11:43:39
【问题描述】:
我遵循了有关嵌入和扩展 Python 运行时的官方 Python 文档。虽然我设法让它工作,但我不知道如何同时调试 c++ 和 Python 代码。
Visual Studio 提供了混合模式调试选项,您可以在其中单步执行代码并从 c++ 断点跳转到 Python 断点。我已经尝试关注官方的 microsoft 文档,并且我得到了它的工作,但仅适用于 c/c++ 扩展。当解释器被嵌入时,我无法让它工作,也找不到任何关于如何让它工作的资源。
是否可以嵌入解释器并仍然能够在 Visual Studio 中同时调试 Python 和 c++ 代码?
【问题讨论】:
标签:
python
c++
visual-studio
debugging
mixed-mode
【解决方案1】:
好吧,原来我犯了几个错误。
官方文档是指调试 Python 的 c++ 扩展。 Microsoft 文档将“Visual Studio 的 Python 工具”包称为您需要在 Visual Studio 安装程序中安装以进行混合模式调试的必要包。很公平。然而,混合模式调试的文档只探讨了使用 Python 调试 c++ 扩展的场景。
发生的情况是,当您安装 Python 工具时,Visual Studio 会安装它自己的 Python 副本(或 Python 的多个版本)。您可以选择在 Python 环境窗口中使用的解释器版本。
但我试图调试在嵌入式解释器中运行的 Python 代码!发生的事情是,Visual Studio 启动了一个独立的 Python 解释器。它附加了一个调试器,但很自然,它没有运行任何代码,因为所有 Python 脚本都在嵌入式解释器上运行。
然后解决方案如下(我使用的是 cPython):
- 为 Visual Studio 安装 Python 工具。这包含 Python 调试器。
- 将 cPython 从源代码构建到目录。请注意,Python 需要两个目录:构建它的目录和克隆 cPython 存储库的目录。稍后我将参考这些目录。在 Windows 上,您可以使用提供的 PC 构建脚本构建 Python。
- 关于嵌入解释器请参考Python官方documentation。您需要从存储库中添加包含文件并链接第 2 步中构建的库。
- 您需要为嵌入式解释器创建一个 Visual Studio Python 环境。此环境设置让 Visual Studio 知道不要使用它自己的解释器。在 Python 环境窗口中,添加一个新环境:使用 Python 构建目录作为前缀路径。从此,visual studio 将找出大部分其他领域。最后,您可以向此环境添加自定义 PATH 环境变量。嵌入式解释器需要知道 Python 标准库以及其他构建工件的位置。只需将步骤 2 中记下的两个目录附加到 PATH 环境变量中(如“PATH=%PATH%;dir\to\build\python;dir\to\repositories\cpython”,不带引号)。
- 最后,您需要切换到 Python\native 调试并选择新的 Python 环境。