Is it possible to debug CherryPy applications?
I've seen this question posted here before but I want to get a final yes/no on this.
I've been trying to debug my app using Netbeans 6.8 (no luck at all) and the newly released Netbeans 6.9 (notices that 开发者_高级运维code has been called but fails to stop the code from executing).
Is it possible to debug CherryPy applications?
I use breakpoints in cherrypy all the time in Wing IDE (3.x). I should mentions that I don't debug when the application is hosted through a webserver. I run the application using cherrypy's build in webserver, using my CPython interpreter installed on the machine.
The code looks something like this:
# 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()
Then, in Wing IDE, I put a break point somewhere (say in one of my controllers) and then run main.py through the IDE. Pointing a browser at the url of the controller will cause the breakpoint to trigger.
Hope that information was helpful.
I use wdb. It uses websockets, looks great and can be hooked in any WSGI app (like CherryPy). It opens a new debugging tab in your browser when triggered.
Follow these instructions to configure your CherryPy app, and in your code write a line like the next and restart the app:
import wdb;wdb.set_trace()
Also any exceptions in the app (not all in CherryPy, though) should be catched.
There's debugging (stepping through code) and then there's debugging (playing with a live system). You can do the latter easily by mounting an http://www.aminus.net/wiki/HTTPREPL in your app.
In Spyder I've managed to use pdb
in a CherryPy application by writing breakpoint()
just before the line I want to inspect.
This breaks into the Spyder debugger, exposing all the regular step in/out functionality.
精彩评论