TensorFlow核心调试;缺少调试符号

时间:2015-11-16 22:45:39

标签: tensorflow bazel

我试图通过将CIFAR-10模型训练的python代码转换为其核心C ++代码来学习TensorFlow的内部结构。 使用Eclipse + PyDev逐步调试python代码效果很好,但是我无法找到如何进入TensorFlow核心的C ++代码。 我尝试使用Eclipse CDT在单独的项目中构建C ++代码,并将调试器附加到运行cifar10_train.py的python进程,如here所述,但是符号永远不会被加载,并且(显然)延迟断点是从未打过。

背景和设置:

我在Ubuntu 14.04 LTS上运行,按照here所述的来源安装了TensorFlow代码,我的CDT项目使用了包含

的Makefile

bazel build -c dbg //tensorflow/cc:tutorials_example_trainer

1 个答案:

答案 0 :(得分:6)

TensorFlow加载一个名为_pywrap_tensorflow.so的库,其中包含其C API(在tensorflow/tensorflow/core/client/tensor_c_api.cc中定义)。

在我的例子中,在运行时加载的库位于
~/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/_pywrap_tensorflow.so
但是从本地源代码构建的库位于~/.cache/bazel/_bazel_<username>/dbb3c677efbf9967e464a5c6a1e69337/tensorflow/bazel-out/local_linux-dbg/bin/tensorflow/python/_pywrap_tensorflow.so

在加载的库上复制本地构建的库,并附加到问题中定义的python进程解决了问题。