2010-12-21 10 views
18

AppEngineをローカルで(つまりdev_appserver.pyを使用して)作業している間に、ステップバイステップのデバッグを行うにはどうしますか? logging.info()または同様の関数を使用してコード内のすべての変数の値を表示し、エラーの場所を判断するのは古すぎる方法です。AppEngine:ステップバイステップのデバッグ

答えて

8

ローカルAppEngineのプロセスは、通常のPythonのプロセスがある場合は、オプションのカップルがあります:あなたのコードで

  1. 、場所 "コードブレークポイント":import pdb; pdb.set_trace()を。 dev_appserver.pyを通常どおり実行し、Pythonデバッガはコードでその行に達したときにブレークします。

  2. pdbでdev_appserver.pyを実行します。シェルから:$ python -m pdb dev_appserver.py。ブレークポイントを設定するには、コマンドb filename.py:linenumberを使用します。その後、続行するにはcコマンドを使用します。

http://docs.python.org/library/pdb.html#debugger-commandspdb module documentationを見ます。

+1

参照してください。それはちょうど停止しないと私はBdbQuitエラーを取得するようだ! – Rafid

+0

2つ目は私のために働いたが、それは便利ではない。それは私のコードの特定のポイントでブレークポイントを持っている間、最初から壊れています。 – Rafid

+0

ブレークポイントを設定するには、 "b filename.py:linenumber"コマンドを使用します。次に、 "c"コマンドを使用して続行します。私は、プロセスのリストにそれをAppEngineLauncherにおけるアプリとgrepを開始し、実行するコマンドを把握するにはhttp://docs.python.org/library/pdb.html#debugger-commands – codeape

15

codeapeの答えの最初の提案で少し拡張してください:dev_appserver.pyはstdin、stdout、stderrについてうんざりしているので、もう少し作業をすることで "コードブレークポイント"を設定する必要があります。これは私のためのトリックを行います。

import sys 
for attr in ('stdin', 'stdout', 'stderr'): 
    setattr(sys, attr, getattr(sys, '__%s__' % attr)) 
import pdb 
pdb.set_trace() 

あなたは、コマンドラインからではなく、GUIのApp Engineランチャー経由dev_appserver.pyを実行する必要があります。 pdb.set_trace()行が実行されると、その時点でpdbデバッガにドロップされます。

+0

あなたのコードをもう少し詳しく説明できますか?なぜここにsetattrが必要ですか?このコードを書かないとどうなりますか? – Rafid

+0

私はあなたのソリューションを試しましたが、それは私にとってはうまくいかなかったのです。私は "不正なシーク"エラーが発生します。 – Rafid

+0

forループは単に '' sys.stdin = sys .__ stdin__;を書くためのショートカットです。 sys.stdout = sys .__ stdout__; sys.stderr = sys .__ stderr__'' – codeape

3

PyCharm Professional Editionは、ステップバイステップのデバッグを可能にします。

いくつかの設定手順を実行したい場合は、PyCharm Community Editionの無料版をGoogle App EngineのPythonでも使用できるように設定できます。 PyCharm Professional Editionのデプロイメントなどのすべての利点を得ることはできませんが、段階的なデバッグを行い、コードナビゲーションと自動補完作業を行うことができます。デバッグを有効にするには

、設定することにより、PyCharm実行/デバッグの設定を編集します。

  • スクリプト:App Engineのdev_appserver.py
  • スクリプトパラメータ:--automatic_restart=no --max_module_instances="default:1" .
  • 作業ディレクトリ:お使いのベースのプロジェクトフォルダ( app.yamlファイルを含むもの)

aup PyCharm CE prでの詳しい手順、説明、およびコード補完方法については、 oject、http://www.enkisoftware.com/devlogpost-20141231-1-Python_Google_App_Engine_debugging_with_PyCharm_CE.htmlを参照してください。

あなたがWindows上で作業しているとあなたはGAEのデバッグのpythonにPyTools(マイクロソフトのVisual Studioのコミュニティ)を使用したい場合は、最初のものは私のために動作しませんでしたhttp://www.enkisoftware.com/devlogpost-20140814-1-Python_Google_App_Engine_debugging_with_PyTools.html

関連する問題