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

11

我正在使用apollocaffeReinspect。Apollocaffe是一个C++库,而Reinspect是使用Python编写的。Reinspect从apollocaffe调用了API。我想在apollocaffe内部调试这些API。从Python代码中,我使用了

python -m pdb train.py

但我无法从Apollocaffe中进入API。 就像在Apollocaffe中使用cout << "test" << endl;一样,但控制台上没有输出。我该如何调试C++代码,如果至少能打印输出就好了。

1个回答

15

如果你只对 C++ 部分进行调试感兴趣,你可以使用 Python 启动 GDB -

gdb python
b <C++ function to break at>
run train.py

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


你尝试过标准的cout / printf吗?这些应该可以工作。 - rkellerm
你正在使用的C++库是否包含调试标志? - Sheikh Faisal Miskhat
@SheikhFaisalMiskhat 没错,谢谢。已经相应地编辑了答案。 - rkellerm
@rursw1 是的,我使用了cout。但是没有打印到控制台。 - batuman
@batuman:也许cout语句插入的位置不正确?也许有几个版本的库,而你链接到了错误的版本? - rkellerm
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接