2016-11-30 7 views
3

私はTensorFlowからdecode_raw_op_testをデバッグしています。テストファイルはPythonで書かれていますが、基礎となるC++ファイルからコードを実行します。TensorFlowテストのデバッグ:pdbまたはgdb?

pdbを使用すると、Pythonテストファイルをデバッグできますが、C++ファイルは認識されません。基礎となるC++コードをデバッグできる方法はありますか?

(私はdecode_raw_op_test上でGDBを使用してみましたが、それは「実行可能な形式でないファイル:ファイル形式が認識されない」を与える)

答えて

3

が混在PythonとC++のデバッグプログラムはトリッキーです。ただし、gdbを使用してTensorFlowのC++部分をデバッグできます。

  1. gdb下で実行pythonではなく、テスト・スクリプト自体:これを行うには主に2つの方法があります。テストスクリプトがbazel-bin/tensorflow/python/kernel_tests/decode_raw_op_testであるとします。あなたは、次のコマンドを実行します。

    $ gdb python bazel-bin/tensorflow/python/kernel_tests/decode_raw_op_test 
    (gdb) run 
    

    gdbことは、コードのPythonの部品をデバッグするための素晴らしいサポートを持っていません。私はTensorFlow C APIメソッドのブレークポイントを設定することをお勧めします。たとえば、TF_Run(PythonからTensorFlowのC++へのメインエントリポイント)です。

  2. 実行プロセスにgdbを添付します。あなたは($PIDはプロセスIDです)psを使用してPythonのテストのプロセスIDを取得し、実行することができます。

    $ gdb -p $PID 
    

    おそらくアタッチする時間がありますようにブロックするために、あなたのPythonコードの手配をする必要があります。これを行うには、raw_input()関数を呼び出すのが簡単な方法です。

+0

感謝を!私はこれを試してみる。私はsparse_split_op_testやstring_to_hash_bucket_testのようなTensorFlowのpythonモジュールからいくつかのテストをデバッグしています。 [this](http://stackoverflow.com/questions/40675340/tensorflow-python-tests-failing)に入力してください。 – Nayana

1

はステップの下に使用してデバッグでした:

gdb python 

その後、GDBプロンプトで、タイプ

run bazel-bin/tensorflow/python/kernel_tests/decode_raw_op_test 
関連する問題