如何在App Engine中使用PDB?

2 投票
2 回答
568 浏览
提问于 2025-04-30 00:13

我正在用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来测试具体怎么重定向,但这可能会有帮助。

还有一个工具可以将输入输出重定向到一个套接字。虽然不确定它是否有效,但我觉得还是有必要提一下,以防万一。

撰写回答