Is it possible to debug CherryPy applications?
Asked Answered
E

4

6

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?

Embraceor answered 29/6, 2010 at 9:39 Comment(3)
I can say with certainty it's possible in CPython (I do it all the time). I have no idea if it's true in a Jython environment (which I'm assuming your using).Inweave
I have Netbeans configured to use my standard Python (CPython) installation. Can you provide any more information about how you got it working? What IDE (if any) do you use?Embraceor
You can certainly debug CherryPy with pdb, so if you can't debug it with Netbeans, that's a fault of Netbeans.Swig
I
4

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.

Inweave answered 29/6, 2010 at 14:7 Comment(1)
Wing looks a bit pricey for me; I'd like to stick to Netbeans but it's good to know that this is possible - I guess the Netbeans python plugin just needs to mature a bit first to catch up with WingEmbraceor
D
4

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.

Dunt answered 19/9, 2013 at 10:45 Comment(0)
F
3

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.

Friendship answered 29/6, 2010 at 19:26 Comment(1)
I was looking for the former option but that's a very interesting link either way, thanksEmbraceor
D
0

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.

Dorree answered 12/7, 2021 at 17:39 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.