2017-12-05 18 views
0

私のコードにいくつかのブレークポイントを設定するためにpdb.set_trace()を使用していて、いつも滑らかでした。Python-PDBがBdbQuitを自動的に呼び出す

私はループ内のPythonスクリプトを実行するシェルスクリプトがあります。

cat $file1 | (
#read something from file1 
while ... 
do 
    if ... then 
     cat $file2 | (
     # read something from file2 
     while ... 
      do 
       python test.py 
       # read something from file2 
      done) 
    fi 
    #read something from file1 
done) 

はtest.pyはちょうどこんにちは、簡単な世界であると仮定する。 Pythonスクリプトにpdb.set_trace()を追加しました。ループの外側でコードを実行すると、単にpython test.pyによってすべてが正常です。しかし、.shスクリプトを実行すると、それがpdb.set_trace()に到達すると、BdbQuitとPythonスクリプトが生成されます。

問題の内容を理解できませんでした。誰かが私にこれを理解させる手助けができたら本当に感謝しています。

ありがとうございます。あなたはwhileループ内STDINをリダイレクトしている

答えて

1

:インタラクティブPDBプロンプトは、同様STDINから読み込み、それがリダイレクトされていますので、

cat $file1 | while ... 

、それだけで、そのファイルからの入力を取ることになるだろう。

この場合の最も簡単な解決策は、remote-pdbのようなものを使用することです。これは、ネットワーク接続を開きます。 telnetまたはncです。

+0

ありがとうございます。私はpdbも形式stdinを読むことを知らなかった。非常に役立つメモ。私はremote-pdbを使いませんでした。少なくとも、デバッグできるように自分のコードを修正しました。ありがとうございました。 –

関連する問題