プログラムをデバッグするためにpdbモジュールを使用しています。 pdbを終了し、プログラムを最後まで続行できるようにする方法を理解したいと思います。プログラムの実行には計算コストがかかるため、スクリプトが完了しようとせずに終了したくありません。 continue
は機能しないようです。 pdbを終了してプログラムを続行するにはどうすればよいですか?
continue
は「実行を継続し、ブレークポイントに到達したときにのみ停止する」必要があるため、どこかにブレークポイントが設定されています。ブレークポイントを削除するには(手動で挿入した場合):
_(Pdb) break
Num Type Disp Enb Where
1 breakpoint keep yes at /path/to/test.py:5
(Pdb) clear 1
Deleted breakpoint 1
(Pdb) continue
_
または、pdb.set_trace()
を使用している場合は、これを試すことができます(pdbをより派手な方法で使用している場合は、これが問題を引き起こす可能性があります...)
_(Pdb) pdb.set_trace = lambda: None # This replaces the set_trace() function!
(Pdb) continue
# No more breaks!
_
シンプルな Ctrl-D pdbから抜け出します。中断するのではなく続行したい場合は、単に c continue
コマンド全体ではなく
@voithosからの answer は正しいので、set_trace
を使用している場合に1つの選択肢を追加します。はい、pdb.set_trace = lambda: None
ハックは正常に動作しますが、他のブレークポイントが設定されていて、後で再度有効にする場合はそうではありません。私にとってこれは、残念ながらpdb
が多くの機能(ディスプレイリストのような基本的なものでさえ)を欠いているという事実を指し、これは別のケースです。
良いニュースは、 pdb++
がpdb
の優れたドロップイン代替品であり、それが解決することの1つです。 set_trace
を無効にする問題です。だからあなたは簡単に行うことができます:
pip install pdbpp
(Pdb++)
プロンプトで、次を入力します。
pdb.disable()
後で再度有効にしたい場合は、当然ながらこれは機能します:
pdb.enable()
簡単!そして、あなたはその上に他の多くの便利なグッズを手に入れるでしょう。
デバッガを本当に終了したい場合は、 WinPdb のようなものを実行する必要があります。これにより、プロセスからデタッチしてからデバッガを終了できます(N.B.マルチプラットフォームです)。
デバッグを継続したいが、特定のブレークポイントで停止しないようにするには、次を行う必要があります。
cl bp_number
orclear file:line
ブレークポイントを永久に削除するにはまたはdisable pb_number
オフに切り替えますが、元に戻すことができます。continue
を実行し、次にdifferentブレークポイントに到達するまでプログラムを実行します。上記の詳細については、 マニュアル を参照してください。