可以调试CherryPy应用吗?
我之前在这里看到过这个问题,但我想要一个明确的答案,能不能调试。
我一直在用Netbeans 6.8调试我的应用(完全没成功),然后又试了新发布的Netbeans 6.9(注意到代码被调用了,但没法停止代码的执行)。
请问,调试CherryPy应用程序是可能的吗?
4 个回答
3
调试有两种方式,一种是逐行查看代码,另一种是直接在一个运行中的系统里进行调试。后者其实很简单,你可以通过在你的应用里挂载一个http://www.aminus.net/wiki/HTTPREPL来实现。
4
我在用 wdb 这个工具。它使用了 websockets 技术,看起来很不错,而且可以和任何 WSGI 应用(比如 CherryPy)结合使用。当你触发它的时候,它会在你的浏览器里打开一个新的调试标签页。
按照这些 步骤来配置你的 CherryPy 应用,然后在你的代码里写一行像下面这样的代码,并重启应用:
import wdb;wdb.set_trace()
另外,应用中的任何异常(虽然不是 CherryPy 中的所有异常)都应该被捕获。
4
我在Wing IDE(3.x)中经常使用cherrypy的断点。需要说明的是,当应用程序通过网络服务器托管时,我不进行调试。我是通过cherrypy自带的网络服务器运行应用程序,使用我在机器上安装的CPython解释器。
代码大概是这样的:
# main.py
# ...snip...
if __name__ == '__main__':
# Handle configuration settings, calling cherrypy.tree.mount in the process
generate_app(options.environment)
# Run the web server
engine = cherrypy.engine
try:
engine.start()
except:
sys.exit(1)
else:
engine.block()
然后,在Wing IDE中,我在某个地方(比如我的控制器之一)设置一个断点,然后通过IDE运行main.py。用浏览器访问控制器的URL时,断点就会被触发。
希望这些信息对你有帮助。