Debuggen von Web-Apps

8

Ich habe mich im Laufe der Jahre an Debugger gewöhnt, sowohl im Builder als auch im pydev-Debugger in Eclipse.

Momentan mache ich etwas in Python und führe es in Google App Engine aus, und ich sollte hinzufügen, dass ich ziemlich neu bin, um eine echte Web-App zu entwickeln; Ich habe nie wirklich viel getan, außer HTML-Code zu bearbeiten.

Also, ich führe googles dev_appserver und sehe meine Arbeit bei Ссылка , graben und gerade jetzt, das einzige Tool, das ich verwende, um Probleme zu identifizieren ist PMD (armer Mann Debugger). . .basiertes Schreiben von Dingen in die HTML-Seiten, um den Wert von lokalen Variablen zu sehen.

Gibt es eine bessere Technik, um damit umzugehen?

    
Baltimark 17.02.2009, 17:43
quelle

4 Antworten

7

Der dev_appserver ist nur ein Python-Skript, Sie können einfach den pydev-Debugger für dieses Skript mit den richtigen Argumenten verwenden, soweit ich weiß.

Hier ist eine sehr detaillierte Anleitung, wie man das macht:

Ссылка

    
TomHastjarjanto 17.02.2009, 17:47
quelle
4

Ich würde vorschlagen, Protokollanweisungen anstelle von Ausdrucken zu verwenden, da Sie sie besser steuern können. Python hat eine recht gute Logging-Bibliothek.

Für die Protokollierung von Google App Engine auf z. Firebug gibt es auch ein praktisches Tool namens FirePython . Dies ermöglicht es, sich von Ihrer Django oder WSGI App (Middleware) aus an der Firebug Konsole anzumelden.

    
MrTopf 17.02.2009 18:33
quelle
2

"Gibt es eine bessere Technik, um damit umzugehen?" Nicht wirklich.

"Step-Through-Debugger" sind ihr eigenes Problem. Sie sind eine Art mentale Krücke, die es leicht macht, etwas zu bekommen, das so aussieht, als ob es funktioniert.

Sehen Sie sich zunächst Ссылка für etwas an, das hilfreich sein könnte.

Zweitens beachten Sie, dass --debug ausführliche Debugging-Meldungen an die Konsole während der Ausführung ausgibt.

Beachten Sie außerdem, dass Sie viel Python-Erfahrung und Google AppEngine-Erfahrung benötigen, um Dinge wie Webanwendungen zu schreiben. Um diese Erfahrung zu erhalten, ist die print Aussage wirklich ziemlich gut. Es zeigt Ihnen, was vor sich geht, und es ermutigt Sie, wirklich zu verstehen, was Sie erwarten oder beabsichtigen zu passieren.

Debugger sind passiv. Es geht darum, zufälligen Code zu schreiben, zu sehen, was passiert, und Änderungen vorzunehmen, bis es funktioniert. Ich habe Leute dabei beobachtet.

Druckanweisung ist aktiv. Sie müssen planen, was passieren soll, Code schreiben und die Ergebnisse sorgfältig prüfen, um zu sehen, ob die Pläne funktionieren. Wenn es nicht das tut, was Sie beabsichtigt haben, müssen Sie Ihre Hypothese hypothetisieren und testen. Wenn es funktioniert, dann "verstanden" Sie, was vor sich geht. Sobald Sie die Semantik von Python und der Google AppEngine kennen, wächst Ihr Verständnis und das wird wirklich einfach.

    
S.Lott 17.02.2009 18:13
quelle
1

Meine Debugging-Toolbox für GAE:

  • Standard-Python-Protokollierung als Ersatz für print -Anweisungen
  • Werkzeug-Debugger wenn ich bei jedem Fehler nicht in das Konsolen-Log gehen will (funktioniert nicht alles, meistens insbesondere interaktive Dolmetscher-Sitzung)
  • interaktive Konsole bei Ссылка (nicht so gut wie Djangos python manage.py shell , aber immer noch ...)

Symbolische Debugger werden nicht so geschätzt wie anderswo, möglicherweise weil Python überlegene Introspektions- und Reflektionsmechanismen hat.

    
zgoda 18.02.2009 12:01
quelle