如何调试 python - C++ 程序
How to debug a python - c++ program
我得到了一个相当复杂的分布式编程框架,其中有:
- 一个控制器,
BC
,用Python写成一个twisted
插件,在某些机器上是运行;
- 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
的提示
我得到了一个相当复杂的分布式编程框架,其中有:
- 一个控制器,
BC
,用Python写成一个twisted
插件,在某些机器上是运行; - 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
的提示