Nay*_*ana 5 python gdb pdb tensorflow
我正在从 TensorFlow 调试 decode_raw_op_test。测试文件是用 python 编写的,但它执行来自底层 C++ 文件的代码。
使用 pdb,我可以调试 python 测试文件,但是它不能识别 c++ 文件。有没有办法调试底层的 C++ 代码?
(我尝试在 decode_raw_op_test 上使用 gdb,但它给出了“文件不是可执行格式:文件格式无法识别”)
调试混合的 Python 和 C++ 程序很棘手。但是,您可以使用它gdb
来调试 TensorFlow 的 C++ 部分。有两种主要方法可以做到这一点:
python
在 下运行gdb
,而不是测试脚本本身。假设您的测试脚本在bazel-bin/tensorflow/python/kernel_tests/decode_raw_op_test
. 您将运行以下命令:
$ gdb python bazel-bin/tensorflow/python/kernel_tests/decode_raw_op_test
(gdb) run
Run Code Online (Sandbox Code Playgroud)
请注意,gdb
它对调试代码的 Python 部分没有很好的支持。我建议将您运行的测试用例缩小到一个简单的测试,并在 TensorFlow C API 方法上设置断点,例如TF_Run
,这是在 TensorFlow 中从 Python 到 C++ 的主要入口点。
附加gdb
到正在运行的进程。您可以使用ps
然后运行获取 Python 测试$PID
的进程 ID (进程 ID在哪里):
$ gdb -p $PID
Run Code Online (Sandbox Code Playgroud)
您可能需要安排 Python 代码进行阻塞,以便有时间进行附加。调用该raw_input()
函数是一种简单的方法。
归档时间: |
|
查看次数: |
3405 次 |
最近记录: |