Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 调试tensorflow单元测试_Python_C++_Machine Learning_Gdb_Tensorflow - Fatal编程技术网

Python 调试tensorflow单元测试

Python 调试tensorflow单元测试,python,c++,machine-learning,gdb,tensorflow,Python,C++,Machine Learning,Gdb,Tensorflow,我找到了显示如何运行单元测试的 我认为通过调试单元测试可以更好地理解源代码 我可以在tensorflow python应用程序运行时调试源代码。但是我不知道如何调试单元测试。我是bazel和gdb调试新手。总结一下: 您必须确保首先构建测试二进制文件:通过运行bazel test或使用bazel build或使用bazel build-c dbg。最后一个提供完全可调试的可执行文件,在gdb回溯中提供行号 二进制文件与生成文件位于同一目录中(即,如果您有tensorflow/core/BUIL

我找到了显示如何运行单元测试的

我认为通过调试单元测试可以更好地理解源代码

我可以在tensorflow python应用程序运行时调试源代码。但是我不知道如何调试单元测试。我是bazel和gdb调试新手。

总结一下:

  • 您必须确保首先构建测试二进制文件:通过运行
    bazel test
    或使用
    bazel build
    或使用
    bazel build-c dbg
    。最后一个提供完全可调试的可执行文件,在gdb回溯中提供行号
  • 二进制文件与生成文件位于同一目录中(即,如果您有
    tensorflow/core/BUILD
    ,则二进制文件将位于
    bazel-bin/tensorflow/core
  • 通过使用bazel查询,可以找到包含给定
    .cc
    文件的bazel名称。例如,对于
    common\u shape\u fns\u test
    您可以使用下面的命令找到目标名称为
    //tensorflow/core:framework\u common\u shape\u fns\u test


每个“bazel测试”基本上都在
bazel bin
下运行相应的二进制文件,因此您可以在gdb@YaroslavBulatov谢谢,但是我找不到测试文件的位置。例如,在common_shape_fns_test.cc中,我搜索
common_shape_fns_test.cc
字符串并在构建文件中找到它。然后我找不到任何提示。现在我知道我应该首先构建它:
bazel build//tensorflow/core:framework\u common\u shape\u fns\u test
。然后我可以运行它:
bazelbin/tensorflow/core/framework\u common\u shape\u fns\u test
fullname=$(bazel query tensorflow/core/framework/common_shape_fns_test.cc)
bazel query "attr('srcs', $fullname, ${fullname//:*/}:*)"