トラブルシューティングとデバッグ

インタラクティブなデバッグ

どんなものも、いずれ壊れます (Things break)。そんなとき、何がうまく行っ ていないのか、なぜ大きな違いが生まれるのかを即座に明らかにすることは大 きな価値があります。 Pylons は、 Ian Bicking の EvalException ミドルウェアを Mako/Myghty の完全なトレースバックの情報を含むようにカスタマイズしたも のをデフォルトで利用しています。

デバッグ画面

デバッグ画面の上部には3つのタブがあります。

Traceback

生の例外トレースと、インタラクティブなデバッガを提供します。

Extra Data

例外発生時の CGI, WSGI 変数と設定情報を表示します。

Template

人間が読みやすい Mako または Myghty テンプレートのトレースバックで す。

Mako と Myghty はテンプレートを Python モジュールにコンパイルするので、 テンプレートのどの行でエラーが起きたのかを正確に見出すのは難しい場合が あります。 Template タブは、 Mako や Myghty の完全なトレースバックを 提供し、テンプレート内の正確な行番号と、エラーがどこで起こっているのか の情報を提供します。例外がテンプレートを描画する前に発生した場合には、 この項目にはテンプレートに関する情報は表示されません。

例: トレースバックを探索する

インタラクティブなデバッガを利用することは、 sessionrequest といった Web リクエスト中にしか現れないオブジェクトの中身を 深く知るのにも役に立ちます。

エラーを起こして何が起きているかを知るためには、単に興味を持っているア クションの中で例外を raise します。この例では、今あなたが見ているページ を表示するのに使われているアクション (訳注: この記述は原文が間違ってい るのでは?) の中でエラーを raise します。 docs コントローラは以下のよう なものです。

class DocsController(BaseController):
    def view(self, url):
        if request.path_info.endswith('docs'):
            redirect_to('/docs/')
        return render('/docs/' + url)

sessionrequest の中身を知りたいので、最初にそれらの値を束縛 (bind) しておく必要があります。ここで、値の束縛と例外の発生でアクション がどのようになるか見てみましょう。

def view(self, url):
    raise "hi"
    if request.path_info.endswith('docs'):
        redirect_to('/docs/')
    return render('/docs/' + url)

ここに、上記の例に対応したトレースバックを探索している様子を示します (関連部分を抜粋しています):

Note

訳注:

以下の例では、例外が発生した時点で self に束縛されていた sessionrequest が表示されていることがわかります。

_images/doctraceback.png

Email オプション

デバッグの動作のしかたについて、あらゆる変更を行うことができます。たと えば設定ファイルの中で debug 変数を無効にすると、設定ファイルの先頭 でメールアドレスを設定さえしておけば、画面にエラーレポートを表示する代 わりに、 Pylons はそれをメールしてくれます。

error_email_from = you@example.com

この機能はプロダクション・サイトでとても便利です。メールは SMTP を介し て送られるので、適切な SMTP サーバも設定しておく必要があります。

エラー処理オプション

多くのエラー処理オプションを設定ファイルで指定することができます。それ らは インタラクティブなデバッグ で説明されますが、覚えておくべき重要 なポイントは、プロダクション環境では debug を常に false にセットし なければならないということです。そうしなければ、エラーが発生した場合に、 悪意のあるコードを実行するために使用できる開発者のインタラクティブ・ト レースバックを、サイト訪問者に与えてしまうことになります。

Read the Docs v: v1.0.1rc1
Versions
latest
v1.0.1rc1
v0.9.7
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.