如何调试 python - C++ 程序

How to debug a python - c++ program

我得到了一个相当复杂的分布式编程框架,其中有:

  1. 一个控制器,BC,用Python写成一个twisted插件,在某些机器上是运行;
  2. N 守护进程,BM,用 Python 编写,但将 C++ 核心包装为共享库,方式如下:

import imp handle = imp.load_dynamic('mylib', '../libmy.so')

然后每个 BM 通过 jsonrpc 交互与 BC 对话,但我们不关心这个。

我要做的是调试,可能在 step into/step over/step debug 时尚但不限于,一个 BM 进程,在前端显示为单个终端中的同质字符流。

对 C++ 部分非常感兴趣,考虑到 Python 代码几乎最终发布并且运行良好。

由于这种语言混合,我对哪种类型的工具可能有用感到有点困惑。

您可以在通过 Python 加载的任何 C/C++ 扩展上使用 gdb。这样做的方法是:

(gdb) target exec python
(gdb) run
 >>> import your_extension as ye
 >>> ye.do_something ()
 >>> # do your python here
 >>> # or just run your python script from here
(gdb) do debugging stuff

您还可以通过 gdb 添加 breakpoints/do 完整 C/C++ 调试。来自 boost::python docs

的提示