2009-02-17 15 views
8

Mi sono abbastanza abituato a eseguire il debugger nel corso degli anni, sia nel builder, sia usando il debugger pydev in Eclipse.Debug di applicazioni Web

Attualmente sto creando qualcosa in Python e lo sto eseguendo su Google App Engine e dovrei aggiungere che sono abbastanza nuovo nello sviluppo di qualsiasi app web reale; Non ho mai fatto davvero molto oltre a modificare il codice HTML.

Quindi, sto eseguendo dev_appserver di Google e visualizzo il mio lavoro allo http://localhost, dig, e in questo momento, l'unico strumento che sto usando per identificare i problemi è PMD (debugger di poveri). . .basicamente scrivendo cose nelle pagine html per vedere il valore delle variabili locali.

C'è una tecnica migliore per affrontare questo?

risposta

7

Il server dev_app è solo uno script python, puoi semplicemente utilizzare il debugger pydev su quello script con gli argomenti corretti per quanto ne so.

Ecco una guida molto dettagliata su come farlo: "C'è una tecnica migliore per affrontare questo"

http://www.ibm.com/developerworks/opensource/library/os-eclipse-mashup-google-pt1/index.html

+0

Oh, ottimo collegamento. Non avevo nemmeno pensato di mettere dev_apperver nella configurazione di esecuzione. L'ho appena eseguito sulla directory con la mia applicazione, ma sembra che dovrebbe funzionare. – Baltimark

2

Non proprio.

"debugger passo-passo" sono il loro problema. Sono una specie di stampella mentale che rende facile ottenere qualcosa che sembra che funzioni.

In primo luogo, guarda a http://code.google.com/appengine/docs/python/tools/devserver.html#The_Development_Console per qualcosa che potrebbe essere utile.

In secondo luogo, si noti che --debug Stampa messaggi di debug dettagliati sulla console durante l'esecuzione.

Infine, tieni presente che avrai bisogno di molta esperienza di Python e di Google AppEngine per scrivere cose come le applicazioni web. Per ottenere quell'esperienza, l'affermazione print è davvero abbastanza buona. Ti mostra cosa sta succedendo e ti incoraggia a capire veramente cosa stai aspettando o .

I debugger sono passivi. Si tratta di scrivere codice casuale, vedere cosa succede, apportare modifiche finché non funziona. Ho visto persone farlo.

L'istruzione di stampa è attiva. Devi pianificare cosa dovrebbe accadere, scrivere codice e considerare attentamente i risultati per vedere se i piani hanno funzionato. Se non fa ciò che intendevi, devi ipotizzare e testare la tua ipotesi. Se funziona, hai "capito" cosa stava succedendo. Una volta acquisita la semantica di Python e di Google AppEngine, la tua comprensione aumenta e diventa molto semplice.

+0

Grazie. Senza offesa, ma stavo davvero cercando qualcosa come Tomh ha scritto. Ho usato i passaggi progressivi per molto tempo e ho familiarità con i loro vantaggi e svantaggi, sto cercando quella funzionalità nella mia app. Quella console di sviluppo sembra piuttosto interessante, però. – Baltimark

+0

@Baltimark: nessuna offesa presa. Passare attraverso i debugger crea più problemi di quanti ne risolvano, ma se pensi che stiano aiutando, va bene. Non stanno aiutando, ma è la tua opinione sul tuo sviluppo che conta qui, non sulla mia esperienza. –

4

Vorrei suggerire di utilizzare le dichiarazioni di registrazione anziché le stampe, in quanto è possibile controllarle meglio. Python ha una libreria di registrazione abbastanza buona inclusa.

Per la registrazione da Google App Engine ad es. Firebug ci sono anche alcuni strumenti utili chiamati FirePython. Ciò consente di accedere alla console firebug dall'app Django o WSGI (è il middleware).

1

mia cassetta degli attrezzi di debug per GAE:

  • registrazione standard di Python come un sostituto per print dichiarazioni
  • Werkzeug debugger se io non voglio andare al registro console su ogni errore (non tutto funziona, in particolare sessione interattiva interprete)
  • console interattiva a http://localhost:8080/_ah/admin/interactive (non buono come Django di python manage.py shell ma ancora ...)

I debugger simbolici non sono così apprezzati come altrove, forse perché i meccanismi di riflessione e introspezione di Python sono superiori.

Problemi correlati