TensorFlow内核调试;缺少调试符号 我试图通过从CiFiel10模型训练的Python代码中逐步进入TensorFlow的C++代码来学习其内部结构。 使用Eclipse + PyDeV对Python代码进行逐级调试非常有效,但我无法找到如何进入TysFoSoC内核的C++代码。 我尝试在一个单独的项目中使用Eclipse CDT来构建C++代码,并将调试器附加到运行代码“pyth.CiFi10xSala. Py < /Cube >”的Python进程中,但符号从未加载,并且(显然)延迟断点永远不会被击中。p>

TensorFlow内核调试;缺少调试符号 我试图通过从CiFiel10模型训练的Python代码中逐步进入TensorFlow的C++代码来学习其内部结构。 使用Eclipse + PyDeV对Python代码进行逐级调试非常有效,但我无法找到如何进入TysFoSoC内核的C++代码。 我尝试在一个单独的项目中使用Eclipse CDT来构建C++代码,并将调试器附加到运行代码“pyth.CiFi10xSala. Py < /Cube >”的Python进程中,但符号从未加载,并且(显然)延迟断点永远不会被击中。p>,tensorflow,bazel,Tensorflow,Bazel,背景和设置: 我运行的是Ubuntu14.04LTS,安装的TensorFlow代码来自所述的源代码,我的CDT项目使用一个包含 bazel build-c dbg//tensorflow/cc:tutorials\u example\u trainertensorflow加载一个名为\u pywrap\u tensorflow.so的库,其中包含了它的c API(定义见tensorflow/tensorflow/core/client/tensor\u c\u API.cc) 在我的例子中,运

背景和设置:

我运行的是Ubuntu14.04LTS,安装的TensorFlow代码来自所述的源代码,我的CDT项目使用一个包含


bazel build-c dbg//tensorflow/cc:tutorials\u example\u trainer
tensorflow加载一个名为
\u pywrap\u tensorflow.so
的库,其中包含了它的c API(定义见
tensorflow/tensorflow/core/client/tensor\u c\u API.cc

在我的例子中,运行时加载的库位于
~/tensorflow/local/lib/python2.7/site packages/tensorflow/python/\u pywrap\u tensorflow.so

但是,从本地源代码构建的库位于
~/.cache/bazel/_bazel\u/dbb3c67efbf9967e464a5c6a1e69337/tensorflow/bazel out/local\u linux-dbg/bin/tensorflow/python/_pywrap\u tensorflow.so


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

您可能需要使用“-compilation_mode dbg”从源代码重新构建TensorFlow以包含符号如果我正确理解bazel的用户手册,您的建议相当于“-c dbg”我用的旗子……是的,相当于。嗯……我想知道问题是不是所有的TensorFlow C符号都不是“python”二进制文件,而是通过SWIG动态加载和使用的.so文件。这里有一个我发现有点相关的链接——谢谢你的链接。我能够以不同的方式解决问题,并可以进入C++代码。将发布此问题的答案。在我替换为
\u pywrap\u tensorflow\u internal.so
后,我仍然无法在核心转储中获取调试符号。你知道吗?我的bazel构建参数是:
--config=opt--copt=-O2--compilation\u mode=dbg--strip=never--config=cuda--verbose\u failures