可以调试CherryPy应用吗?

6 投票
4 回答
6012 浏览
提问于 2025-04-16 00:33

我之前在这里看到过这个问题,但我想要一个明确的答案,能不能调试。

我一直在用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时,断点就会被触发。

希望这些信息对你有帮助。

撰写回答