是否可以调试CherryPy应用程序?

时间:2010-06-29 09:39:07

标签: python cherrypy

之前我已经看过这个问题here,但我希望得到最终的是/否。

我一直在尝试使用Netbeans 6.8(完全没有运气)和新发布的Netbeans 6.9调试我的应用程序(注意代码已被调用但未能阻止代码执行)。

是否可以调试CherryPy应用程序?

4 个答案:

答案 0 :(得分:4)

我在Wing IDE(3.x)中一直使用断点。我应该提到,当通过Web服务器托管应用程序时,我不会调试。我使用我在机器上安装的CPython解释器,使用网络服务器中的cherrypy构建运行应用程序。

代码看起来像这样:

# 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将导致断点触发。

希望信息有用。

答案 1 :(得分:3)

进行调试(逐步执行代码),然后进行调试(使用实时系统)。您可以通过在应用中添加http://www.aminus.net/wiki/HTTPREPL轻松完成后者。

答案 2 :(得分:3)

我使用wdb。它使用websockets,看起来很棒,可以挂钩任何WSGI应用程序(如CherryPy)。它会在触发时在浏览器中打开一个新的调试选项卡。

按照这些instructions to configure your CherryPy app,在您的代码中写下一行,然后重启应用:

import wdb;wdb.set_trace()

此外,应用程序中的任何异常(不是所有在CherryPy中的异常)都应该被捕获。

答案 3 :(得分:0)

在 Spyder 中,我设法在 CherryPy 应用程序中使用了 pdb,方法是在要检查的行之前编写 breakpoint()

这会中断 Spyder 调试器,暴露所有常规的步入/步出功能。