アプリケーションエラーのデバッグ—Flaskドキュメント

提供:Dev Guides
< FlaskFlask/docs/2.0.x/debugging
移動先:案内検索

アプリケーションエラーのデバッグ

イントロダクション

本番環境で開発サーバーを実行したり、組み込みデバッガーを有効にしたりしないでください。デバッガーを使用すると、ブラウザーから任意のPythonコードを実行できます。 ピンで保護されていますが、セキュリティのために信頼するべきではありません。

エラーログツールで説明されているようにSentryなどのエラーログツールを使用するか、ログで説明されているようにログと通知を有効にします。

サーバーにアクセスできる場合、request.remote_addrがIPと一致する場合は、外部デバッガーを開始するためのコードを追加できます。 一部のIDEデバッガーにはリモートモードもあるため、サーバー上のブレークポイントをローカルで操作できます。 デバッガーを一時的にのみ有効にします。


組み込みデバッガー

組み込みのWerkzeug開発サーバーは、リクエスト中に未処理のエラーが発生したときにブラウザーにインタラクティブなトレースバックを表示するデバッガーを提供します。 このデバッガーは、開発中にのみ使用する必要があります。

class=screenshot align-center|screenshot of debugger in action

警告

デバッガーを使用すると、ブラウザーから任意のPythonコードを実行できます。 ピンで保護されていますが、それでも大きなセキュリティリスクがあります。 実稼働環境で開発サーバーまたはデバッガーを実行しないでください。


デバッガーを有効にするには、FLASK_ENV環境変数をdevelopmentに設定して開発サーバーを実行します。 これにより、Flaskがデバッグモードになり、一部のエラーの処理方法が変更され、デバッガーとリローダーが有効になります。

FLASK_ENVは環境変数としてのみ設定できます。 Pythonコードから実行する場合、debug=Trueを渡すと、デバッグモードが有効になります。これはほとんど同等です。 デバッグモードは、FLASK_ENVとは別にFLASK_DEBUG環境変数で制御できます。

app.run(debug=True)

開発サーバーおよびコマンドラインインターフェイスには、デバッガーの実行、デバッグモード、および開発モードに関する詳細情報があります。 デバッガーの詳細については、 Werkzeugのドキュメントを参照してください。


外部デバッガー

IDEによって提供されるものなどの外部デバッガーは、組み込みデバッガーよりも強力なデバッグエクスペリエンスを提供できます。 また、エラーが発生する前、またはエラーが発生しなかった場合に、リクエスト中にコードをステップスルーするために使用することもできます。 別のマシンで実行されているコードをデバッグできるように、リモートモードを備えているものもあります。

外部デバッガーを使用する場合、アプリは引き続きデバッグモードである必要がありますが、組み込みのデバッガーとリローダーを無効にすると便利な場合があり、干渉する可能性があります。

コマンドラインから実行する場合:

Pythonから実行する場合:

app.run(debug=True, use_debugger=False, use_reloader=False)

これらを無効にする必要はありません。外部デバッガーは引き続き次の注意事項を処理します。 組み込みデバッガーが無効になっていない場合、外部デバッガーが検出する前に、未処理の例外をキャッチします。 リローダーが無効になっていない場合、デバッグ中にコードが変更されると、予期しないリロードが発生する可能性があります。