我遵循了有关嵌入和扩展 Python 运行时的官方 Python 文档。虽然我已经设法让它工作,但我不知道如何一起调试 C++ 和 Python 代码。
Visual Studio 提供了混合模式调试选项,您可以单步执行代码并从 C++ 断点跳转到 Python 断点。我尝试遵循有关此问题的官方微软文档,并且我让它工作,但仅适用于 c/c++ 扩展。当解释器被嵌入时,我无法让它工作,也找不到任何关于如何让它工作的资源。
是否可以嵌入解释器并且仍然能够在 Visual Studio 中一起调试 Python 和 C++ 代码?
好吧,事实证明我犯了几个错误。
官方文档提到了调试 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官方文档 https://docs.python.org/3/extending/embedding.html关于嵌入解释器。您需要从存储库添加包含文件并链接步骤 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环境。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)