之前我已经看过这个问题here,但我希望得到最终的是/否。
我一直在尝试使用Netbeans 6.8(完全没有运气)和新发布的Netbeans 6.9调试我的应用程序(注意代码已被调用但未能阻止代码执行)。
是否可以调试CherryPy应用程序?
答案 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 调试器,暴露所有常规的步入/步出功能。