tensorflow debug

·  阅读 118

tensorflow编译步骤

基本编译步骤,请参考www.tensorflow.org/install/sou…)

debug tensorflow

  1. 创建python3虚拟环境

注意,为了保证环境的独⽴性,我们⼀般推荐使⽤python虚拟机。所以在运⾏以下 命令之前,运⾏以下命令创建 python虚拟机

virtualenv --python=python3 ve_test
复制代码

激活虚拟机:

source ve_test/bin/activate
复制代码
  1. 编译时打开调试选项

默认情况下,我们使用优化的编译模式(-c opt)进行构建,因此不会有调试符号,gdb提供堆栈跟踪。要使用调试符号进行构建,请将以下标志添加到您的构建命令

--copt=-g3 --strip=never

一旦我们使用符号构建了 GDB,它的加载速度可能会非常慢。以下构建标志可用于加快 GDB 加载时间

--linkopt -Wl,--gdb-index

编译过程中需要较⼤的磁盘空间, 可以指定package生成的目录以及 TMP目录

./bazel-bin/tensorflow/tools/pip_package/build_pip_package --src tmp_dir --dst ./
复制代码
export TMPDIR=/mnt/data/tmp/
复制代码
  1. 通过gdb attach调试python

Tensorflow将.so封装到Python package的⽅式被调⽤, 因此,适⽤于简单程序的gdb python + set args + break + run这种⽅式就⾏不通, 因为python真正run之前还没有 load TF包(tf.so), 所以也就⽆法捕获.so中的符号. 正确的做法是在python XXX.py执 ⾏起来之后, 即已经load了tf.so, 再通过gdb + attach的⽅式调试之. 实际操作中, 可 以在python中加类似下⾯这句, 待attach(会load很多符号, 所以很慢)完成之后, 继续 执⾏python代码.

input("pid: " + str(os.getpid()) +", press enter after attached")
复制代码
分类:
代码人生
标签:
分类:
代码人生
标签:
收藏成功!
已添加到「」, 点击更改