最近在修改tensorflow源码,发现调试起来真的是特别麻烦。尤其是在c++端遇到一些段错误啥的,python这边抛出来的错误没有一点参考价值。
最后还是用gdb来完成跟踪调试。首先用bazel编译tensorflow的时候,需要加上-g的编译选项,具体代码如下:
bazel build --copt=-g -c dbg -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
编译安装完之后,可以直接用gdb运行python程序:
gdb -ex r --args python filename.py [args]
然后就可以从gdb里面进入tensorflow了,如果需要单步调试,设置断点什么的,可以在gdb里面先ctrl+c,然后设置好断点,再直接r重新执行就可以了。如果发生段错误,也可以打印出很详细的backtrace.
网友评论