Python AppEngine:逐步调试
在本地使用AppEngine时(即使用dev_appserver.py),是否需要进行逐步调试?使用logging.info()或类似函数来显示代码中所有变量的值并确定错误所在,这种方式太旧了。Eclipse PyDev支持调试和AppEnginePython AppEngine:逐步调试,python,debugging,google-app-engine,Python,Debugging,Google App Engine,在本地使用AppEngine时(即使用dev_appserver.py),是否需要进行逐步调试?使用logging.info()或类似函数来显示代码中所有变量的值并确定错误所在,这种方式太旧了。Eclipse PyDev支持调试和AppEngine 如果本地appengine进程是一个普通的python进程,那么您有两个选项: 在代码中,放置“代码断点”:importpdb;pdb.set_trace()。正常运行dev_appserver.py,python调试器到达代码行时将中断 在pdb中
如果本地appengine进程是一个普通的python进程,那么您有两个选项:
importpdb;pdb.set_trace()
。正常运行dev_appserver.py
,python调试器到达代码行时将中断$python-mpdb dev_appserver.py
。要设置断点,请使用命令b filename.py:linenumber
。然后使用c
命令继续。看请参阅。对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应用程序引擎启动器运行dev_appserver.py
。当执行pdb.set_trace()
行时,此时您将被放入pdb
调试器。启用开箱即用的分步调试
如果您愿意经历一些设置步骤,那么免费版本PyCharm Community Edition也可以配置为与Google应用程序引擎python一起使用。您不会获得PyCharm Professional Edition的所有优点,例如部署,但您可以一步一步地进行调试,并获得代码导航和自动完成功能
要启用调试,请通过设置编辑PyCharm运行/调试配置:
- 脚本:appengine的dev_appserver.py
- 脚本参数:
--automatic\u restart=no--max\u module\u instances=“默认值:1”。
- 工作目录:基本项目文件夹(包含app.yaml文件的文件夹)
如果您在Windows上工作,并且希望使用PyTools(Microsoft Visual Studio社区)为GAE调试python,请参见是的,您现在可以轻松地完成Visual Studio代码的调试 首先,您需要安装python模块debugpy
pip安装debugpy
然后为VisualStudio代码安装Python扩展
现在使用以下命令启动服务器:
cd/path/to/python/project
python-m debugpy--listen 5678/path/to/googlecloudsdk/platform/google_appengine/dev_appserver.py。
在VisualStudioCodeDebug中,在“lauch.json”内创建一个配置
之后,您只需设置断点,然后单击运行“Python:Attach”。您能再解释一下您的a代码吗?为什么这里需要设置属性?如果我不写这个代码呢?我试过你的解决方案,但对我无效。我得到“非法搜索”错误。for循环只是写入sys.stdin=sys的快捷方式;sys.stdout=sys.\u stdout\u;sys.stderr=sys.\uu stderr\uuuHandy factoid:这也适用于调试Python GUI应用程序!第一个不适合我。它只是没有停止,我似乎得到BdbQuit错误!第二个对我有用,但不方便。它从一开始就中断了,而我希望在代码的某个点上有一个断点。要设置断点,请使用命令“b filename.py:linenumber”。然后使用“c”命令继续。为了确定要运行哪个命令,我只需在AppEngineLauncher中启动应用程序,并在进程列表中对其执行grep操作:
ps x | grep dev_appserver
,然后停止它并从命令行启动它,但我直接在python命令之后添加-m pdb
。
{
"name": "Python: Attach",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
}
}