如何在App Engine中使用PDB?
我正在用Google App Engine的开发版本(1.9.14.1225)搭建一个基本的网站,但我不知道怎么进入调试器,以找出为什么我的模板变量没有被渲染。
App Engine的文档上说可以使用: import pdb; pdb.set_trace();
https://cloud.google.com/appengine/docs/python/tools/devserver#Python_Debugging_with_PDB
但是,当我把pdb放到我的代码里时,出现了这个错误:
if self.quitting: raise BdbQuit
我该怎么进入pdb调试器呢?
ERROR 2014-10-30 14:25:16,768 webapp2.py:1552]
Traceback (most recent call last):
File "/Users/Bryan/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "/Users/Bryan/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "/Users/Bryan/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "/Users/Bryan/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1102, in __call__
return handler.dispatch()
File "/Users/Bryan/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "/Users/Bryan/Desktop/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "/Users/Bryan/work/GoogleAppEngine/dermalfillersecrets/main.py", line 94, in get
self.response.write(template.render(template_values))
File "/Users/Bryan/work/GoogleAppEngine/dermalfillersecrets/main.py", line 94, in get
self.response.write(template.render(template_values))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bdb.py", line 49, in trace_dispatch
return self.dispatch_line(frame)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bdb.py", line 68, in dispatch_line
if self.quitting: raise BdbQuit
osX 10.9.5
2 个回答
1
如果你是通过图形界面(GUI)来运行你的开发服务器,那么我觉得你可能无法使用pdb这个调试工具。
你可以试试通过命令行来运行应用引擎的服务器,方法是:
dev_appserver.py myapp
还有可能你也可以使用django的服务器,命令是:django-admin runserver
1
看起来在Mac上使用PDB时有一个已知的问题,你可以查看这个链接。我建议你给这个问题“点赞”,这样可以让更多人关注,并且可以评论说你也遇到了这个问题。
这个问题似乎是因为PDB在输入输出时使用了标准输入和标准输出,而Mac的开发服务器不支持这些功能。
另外,有一个第三方工具,据说可以正常工作。
在这里看起来你可以重定向输入输出,我没有Mac来测试具体怎么重定向,但这可能会有帮助。
还有一个工具可以将输入输出重定向到一个套接字。虽然不确定它是否有效,但我觉得还是有必要提一下,以防万一。