実行中の Python アプリケーションのスタック トレースの検査
Python アプリケーションが予期せずハングした場合、問題の原因を特定するのが困難な場合があります。幸いなことに、実行中のアプリケーションのスタック トレースを取得する手法があり、アプリケーションの停止時に実行されている特定のコードを特定できます。
カスタム シグナル ハンドラーの使用
スタック トレースを表示する 1 つの方法は、カスタム シグナル ハンドラーを使用することです。この手法には、実行中のアプリケーションにシグナルを送信し、ハンドラーをトリガーしてスタック トレースをキャプチャし、それを対話的に表示することが含まれます。以下はデバッグ関数を使用した例です。
<code class="python">import code, traceback, signal def debug(sig, frame): d={'_frame':frame} d.update(frame.f_globals) 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) </code>
listen() 関数が呼び出されると、os.kill または kill を使用して SIGUSR1 シグナルをプロセスに送信すると、実行中のアプリケーションが中断され、Python コンソールが提供されます。スタックトレース付き。
以上が実行中の Python アプリケーションのスタック トレースを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。