在 VS Code 中从 C++ 调试 pybind
使用 debugpy 调试
在被 C++ 调用的 python 文件中加上这样的内容(端口可以随便选):
import debugpy
debugpy.listen(5678)
debugpy.wait_for_client()
这样在第一次加载这个 python 模块的时候,这行代码就会暂停等待调试器连接。我们可以创建这样的 Python 调试配置,随后连接正在监听端口的 python 程序。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python attach",
"type": "debugpy",
"request": "attach",
"connect": {
"host": "127.0.0.1",
"port": 5678
}
}
]
}
如果 C++ 程序的调试器还开着,工作区就会同时存在两个调试器。通过切换调试会话可以对 C++ 和 Python 同时调试。
打印异常信息
如果直接运行,pybind 可能会捕获 python 侧的异常信息,给出的错误不明不白。锁定 python 脚本有错的位置之后,可以在代码周围加上 try-except
块,并打印对应的异常到标准输出流,这样就能根据报错信息进一步找到出错点。