AppEngine:逐步调试

时间:2010-12-21 09:05:57

标签: python debugging google-app-engine

在本地使用AppEngine时(即使用dev_appserver.py),无论如何都要进行逐步调试吗?使用logging.info()或类似函数来显示代码中所有变量的值并确定错误的位置是一种过时的方式。

5 个答案:

答案 0 :(得分: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 Launcher运行dev_appserver.py。执行pdb.set_trace()行后,您将在此时被放入pdb调试器。

答案 1 :(得分:12)

Eclipse PyDev支持调试和AppEngine。

http://code.google.com/appengine/articles/eclipse.html

答案 2 :(得分:8)

如果本地appengine进程是一个普通的python进程,你有几个选择:

  1. 在您的代码中,放置“代码断点”:import pdb; pdb.set_trace()。正常运行dev_appserver.py,当python调试器到达带代码的行时,它将会中断。

  2. 在pdb中运行dev_appserver.py。来自shell:$ python -m pdb dev_appserver.py。要设置断点,请使用命令b filename.py:linenumber。然后使用c命令继续。请参阅http://docs.python.org/library/pdb.html#debugger-commands

  3. 请参阅pdb module documentation

答案 3 :(得分:3)

PyCharm Professional Edition可以开箱即用地进行逐步调试。

如果您愿意经历一些设置步骤,可以将免费版本PyCharm Community Edition配置为使用Google App Engine python。您无法获得PyCharm专业版的所有优势,例如部署,但您可以逐步调试并获得代码导航和自动完成功能。

要启用调试,请通过设置:

编辑PyCharm Run / Debug配置
  • 脚本:App Engine的dev_appserver.py
  • 脚本参数:--automatic_restart=no --max_module_instances="default:1" .
  • 工作目录:您的基础项目文件夹(包含app.yaml文件的文件夹)

有关更详细的说明,解释以及如何在aup PyCharm CE项目中完成代码完成,请参阅http://www.enkisoftware.com/devlogpost-20141231-1-Python_Google_App_Engine_debugging_with_PyCharm_CE.html

如果您正在使用Windows并且想要使用PyTools(Microsoft Visual Studio社区)来调试GAE的python,请参阅http://www.enkisoftware.com/devlogpost-20140814-1-Python_Google_App_Engine_debugging_with_PyTools.html

答案 4 :(得分:0)

是的,现在您可以通过 Visual Studio Code 轻松完成。

首先你需要安装一个python模块debugpy

pip install debugpy

然后为 Visual Studio Code 安装 Python 扩展。

现在使用以下命令启动服务器:

cd /path/to/python/project
python -m debugpy --listen 5678 /path/to/google-cloud-sdk/platform/google_appengine/dev_appserver.py .

在 Visual Studio Code Debug 中,在“luch.json”中创建一个配置

{
    "name": "Python: Attach",
    "type": "python",
    "request": "attach",
    "connect": {
      "host": "localhost",
      "port": 5678
    }
  }

之后,您可以设置断点,然后单击运行“Python:附加”。