6 Stimmen

Ist es möglich, CherryPy-Anwendungen zu debuggen?

Ich habe diese Frage bereits hier gesehen, aber ich möchte eine abschließende Antwort auf diese Frage.

Ich habe versucht, meine App mit Netbeans 6.8 (ohne Erfolg) und dem neu veröffentlichten Netbeans 6.9 (bemerkt, dass der Code aufgerufen wurde, aber nicht gestoppt hat) zu debuggen.

Ist es möglich, CherryPy-Anwendungen zu debuggen?

4voto

Eric Palakovich Carr Punkte 21678

Ich verwende in Wing IDE (3.x) ständig Breakpoints in Cherrypy. Ich sollte erwähnen, dass ich nicht debugge, wenn die Anwendung über einen Webserver gehostet wird. Ich führe die Anwendung mit dem integrierten Webserver von Cherrypy aus, der meinen auf dem Computer installierten CPython-Interpreter verwendet.

Der Code sieht ungefähr so aus:

# main.py

# ...snip...

if __name__ == '__main__':

    # Behandlung von Konfigurationseinstellungen, Aufruf von cherrypy.tree.mount im Prozess
    generate_app(options.environment)

    # Starten des Webservers
    engine = cherrypy.engine
    try:
        engine.start()
    except:
        sys.exit(1)
    else:
        engine.block()

Dann setze ich in Wing IDE einen Breakpoint irgendwo (zum Beispiel in einem meiner Controller) und führe main.py durch die IDE aus. Wenn ich einen Browser auf die URL des Controllers zeige, wird der Breakpoint ausgelöst.

Hoffentlich war diese Information hilfreich.

4voto

Yajo Punkte 4768

Ich benutze wdb. Es verwendet Websockets, sieht gut aus und kann in jede WSGI-App (wie CherryPy) integriert werden. Wenn ausgelöst, öffnet es einen neuen Debugging-Tab in Ihrem Browser.

Befolgen Sie diese Anweisungen, um Ihre CherryPy-App zu konfigurieren, und schreiben Sie in Ihrem Code eine Zeile wie die folgende und starten Sie die App neu:

import wdb;wdb.set_trace()

Außerdem sollten alle Ausnahmen in der App abgefangen werden (nicht alle in CherryPy, allerdings).

3voto

fumanchu Punkte 14029

Es gibt Debuggen (Schritt-für-Schritt-Durchlauf des Codes) und dann gibt es Debuggen (Experimentieren mit einem Live-System). Sie können Letzteres ganz einfach durch Einbinden eines http://www.aminus.net/wiki/HTTPREPL in Ihrer App durchführen.

0voto

Saaru Lindestøkke Punkte 1284

In Spyder habe ich es geschafft, pdb in einer CherryPy-Anwendung zu nutzen, indem ich breakpoint() gerade vor der Zeile schreibe, die ich inspizieren möchte.

Dies bricht in den Spyder-Debugger ein und zeigt alle regulären Schritt-ein-/Schritt-aus-Funktionen an.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X