AppEngine:逐步调试

Raf*_*fid 18 python debugging google-app-engine

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

Wil*_*hen 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()
Run Code Online (Sandbox Code Playgroud)

您必须dev_appserver.py从命令行而不是通过GUI App Engine Launcher运行.pdb.set_trace()执行该行时,您将在此时被放入pdb调试器中.


cod*_*ape 8

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

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

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

请参阅pdb模块文档.