我想在 VSCode 中以“混合模式”运行和调试我自己的 Python C++ 扩展。由于定义自己的 python 包装器可能非常乏味,因此我想用它pybind11来链接 C++ 和 python。我喜欢 vscode 的调试工具,所以我想在 vscode 中调试我的 python 脚本以及 C++ 函数。
幸运的是,通过首先启动 python 调试器,然后将 gdb 调试器附加到该进程,可以同时调试 python 和 C++ 文件,如nadiah 的博客文章中详细描述的(Windows 用户,请注意这个问题)。这对我来说效果很好。不幸的是,他们手动定义了 C++ - python 绑定。我想用pybind11它来代替。
我使用 . 创建了一个与 nadiah 的示例一致的简化示例pybind11。调试 python 文件可以工作,但 gdb 调试器不会在.cpp文件中停止。根据这个github问题,理论上应该是可能的,但没有关于如何实现这一点的详细信息。
在这里,我尝试尽可能地遵循 nadiah 的示例,但包括pybind11包装器。
创建虚拟环境(也适用于 anaconda,如下所述)
virtualenv --python=python3.8 myadd
cd myadd/
. bin/activate
Run Code Online (Sandbox Code Playgroud)
创建文件myadd.cpp
#include <pybind11/pybind11.h>
float method_myadd(float arg1, …Run Code Online (Sandbox Code Playgroud)