如何从 Python 接口调试底层 C++ 库?

bat*_*man 6 c++ python gdb pdb caffe

我使用apollocaffe复检。Apollocaffe 在 c++ 库中,Reinspect 在 python 中。重新检查来自 apollocaffe 的调用 apis。我喜欢在 apollocaffe 中调试那些 api。从 python 代码,我用

python -m pdb train.py
Run Code Online (Sandbox Code Playgroud)

但是我不能从 apollocaffe 进入 api。我喜欢cout << "test" << endl; in apollocaffe。但是没有任何内容打印到控制台。我如何调试c++代码,至少如果我可以打印,它会很棒。

rke*_*erm 9

如果你有兴趣只调试 C++ 部分,你可以用 Python 启动 GDB -

gdb python
b <C++ function to break at>
run train.py
Run Code Online (Sandbox Code Playgroud)

当然,您需要使用调试信息编译 Caffe:将 -DDEBUG=1 传递给取消注释DEBUG = 1Makefile.config 行的cmake 选项。
从 gdb 调试 Python 和 C++ 可能更复杂,请参阅示例。