ホームページ  >  記事  >  バックエンド開発  >  実行中の Python アプリケーションをオンザフライ スタック トレースでデバッグするにはどうすればよいですか?

実行中の Python アプリケーションをオンザフライ スタック トレースでデバッグするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-28 18:02:29307ブラウズ

How to Debug Running Python Applications with On-the-Fly Stack Traces?

オンザフライ スタック トレースを使用して実行中の 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>

使用法:

  1. listen() を呼び出してシグナル処理を有効にします。 .
  2. kill などのツールまたは Python コード os.kill(pid, signal.SIGUSR1) を使用して、実行中のプロセスに SIGUSR1 シグナルを送信します。

これにより、Python がトリガーされますコンソールに現在のスタック トレースを表示し、変数を探索できるようにします。 Ctrl-D を押して実行を再開します。

追加オプション

バックグラウンド プロセスをデバッグするには、Python クックブック レシピで提供されているパイプベースのソリューションの使用を検討してください。

以上が実行中の Python アプリケーションをオンザフライ スタック トレースでデバッグするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。