Python Web アプリケーションのデバッグ、特に Web リクエストの実行に関する情報が見つからないようです。
これは不可能ですか?いいえの場合、なぜですか?
あなたが置く場合
import pdb
pdb.set_trace()
コードでは、Web アプリは実行時に pdb デバッガー セッションにドロップされますset_trace
。
また、便利です
import code
code.interact(local=locals())
これにより、Python インタープリターが表示されます。Ctrl-d を押すと、実行が再開されます。
さらに便利なのは、
import IPython.Shell
ipshell = IPython.Shell.IPShellEmbed()
ipshell(local_ns=locals())
これにより、IPython セッションにドロップされます (IPython がインストールされていると仮定します)。ここでも、Ctrl-d を押すと実行が再開されます。
Apache とmod_wsgiまたはmod_pythonを介して Web アプリケーションを実行している場合、どちらも pdb を使用したデバッグの段階的なサポートを提供します。トリックは、-X フラグを使用してフォアグラウンド モードで apache を実行する必要があることです。
私の Gentoo システムでは、これを実行します (これは基本的に、apache init スクリプトが -k start を -X に置き換えて使用するコマンドと同じです):
/usr/sbin/apache2 -D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D PYTHON -d /usr/lib64/apache2 -f /etc/apache2/httpd.conf -X
import pdb; pdb.set_trace()
デバッグを開始したい正確な場所でPython Debuggerを使用すると、ターミナルがその行で一時停止します。詳細はこちら:
http://plone.org/documentation/kb/using-pdb