Ho configurato correttamente Pydev in modo che esegua la mia app, tuttavia quando voglio ispezionare/tracciare il mio codice impostando i punti di interruzione il debugger non esegue il kick in (non può tracciare). Qualcuno ha idea di cosa sta succedendo qui?Come si esegue il debug correttamente utilizzando Eclipse e Pydev?
risposta
--noreload
l'opzione è cruciale, altrimenti il server si bloccherà e il punto di interruzione non si innescherà.
In genere non è necessario selezionare manage.py e premere debug. Dalla tua descrizione sembra che tu non abbia impostato i parametri di lancio di Django nel pannello delle impostazioni Esegui/Debug.
Ecco alcune istruzioni passo passo:
http://pydev.blogspot.com/2006/09/configuring-pydev-to-work-with-django.html
e
http://developeradventures.blogspot.com/2008/03/eclipse-django-debugging.html
La parte importante è l'aggiunta della voce per le impostazioni Run/Debug. Quando è il momento di eseguire il debug, impostare il punto di interruzione, sulla barra degli strumenti Eclipse fare clic sulla freccia del menu a discesa del pulsante Debug e selezionare il progetto Django definito. Quindi da una finestra del browser vai all'URL del tuo server Django. Eclipse dovrebbe fermarsi al punto di interruzione.
Ok penso di aver trovato il mio problema. Ho dovuto impostare il breakpoint sull'istruzione def in views.py al posto delle dichiarazioni successive.
Se esegui il debug di Django runserver
, assicurati di specificare il parametro della riga di comando --noreload
. Altrimenti il debugger finisce per guardare all'istanza python sbagliata e non inciampa mai su nessun breakpoint.
Chiama il debugger con la finestra dell'editor corretta selezionata (evidenziata)? Dovresti dire di più su quello che fai. Python o Jython per esempio. È possibile eseguire qualsiasi codice Pyhon ecc. – jbasko
sì, tutto il codice Python funziona. Prima ho impostato un punto di interruzione in una vista, quindi seleziono manage.py, fai clic su debug e funziona correttamente. Quindi vado all'URL per quella vista ma il punto di interruzione non entra in gioco. – prodev42