オンザフライ スタック トレースを使用して実行中の Python アプリケーションをデバッグする
根本原因のトラブルシューティングを行うときにアプリケーションが時折フリーズすることがあると、イライラすることがあります。 Python には、リアルタイムのスタック トレースを生成するメカニズムが用意されており、現在実行中のコードを検査して問題のある箇所を特定できます。
シグナル処理を使用した解決策
オンザフライのスタック トレースを取得するには、次のコードの利用を検討してください:
<code class="python">import code, traceback, signal def debug(sig, frame): d={'_frame':frame} # Allow access to frame object. d.update(frame.f_globals) # Unless shadowed by global d.update(frame.f_locals) i = code.InteractiveConsole(d) message = "Signal received : entering python shell.\nTraceback:\n" message += ''.join(traceback.format_stack(frame)) i.interact(message) def listen(): signal.signal(signal.SIGUSR1, debug) # Register handler listen()</code>
使用法:
これにより、Python がトリガーされますコンソールに現在のスタック トレースを表示し、変数を探索できるようにします。 Ctrl-D を押して実行を再開します。
追加オプション
バックグラウンド プロセスをデバッグするには、Python クックブック レシピで提供されているパイプベースのソリューションの使用を検討してください。
以上が実行中の Python アプリケーションをオンザフライ スタック トレースでデバッグするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。