5

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

背景和设置:

我在 Ubuntu 14.04 LTS 上运行,从这里描述的源安装了 TensorFlow 代码,我的 CDT 项目使用包含

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

4

1 回答 1

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 进程解决了问题。

于 2015-11-18T10:30:24.047 回答