突然問題が発生した[大]プログラムがあります。どこか無限ループ中です。私はこのループを見つけることができません。Python PDBは停止しません
私がやった:プログラムが無限ループに入ったときに
import pdb
pdb.run ('main()')
だから、私はそれが何もしない制御-Cと......を打ちます。実際、私がpdbを使わないときは、control-Cも動作しません。
私は信号を無効にしません。たとえ私がしても、control-Cは何もしません。
これは、問題がC++ - 土地のどこかにあるかどうかを調べるために、これを実行しました。そして、そうではありません - Pythonのクラップスを実行しています。
pdb
を実際にcontrol-cでブレークさせるにはどうすればよいですか? pdb.set_trace()
を使用して
AFAIK、Ctrl-Cはメインスレッドで割り込みを発生し、プログラム全体が停止しない限りスレッド#7に影響しません。私はメインスレッドが 'KeyboardInterrupt'をキャッチしているどこか(例外クラスが指定されていないことを除いて)' try ... except: 'を持っていると思います。 –
また、これはマルチスレッドプログラムです。デッドロックを起こしていないと確信していますか? –
スレッド7は空き状態で実行されていましたが、スレッド1は条件変数で終了するのを待っていました。そこでcontrol-Cが動作しなかった理由を説明します。そしてはい:それはデッドロックではありませんでした(100%CPUを使用していました)。私の最初の考えは「ああ、ループだよ、デッドロックじゃないよ!」それから、私はそれをデバッグすることができませんでした... – iAdjunct