Sto chiamando python -m pdb myapp.py
, quando si attiva un'eccezione e normalmente verrei ricondotto all'interprete pdb per indagare sul problema. Tuttavia questa eccezione viene lanciata dopo che ho chiamato attraverso curses.wrapper()
e inserito la modalità curses, rendendo l'interprete pdb inutile. Come posso aggirare questo?Utilizzare un debugger e maledire allo stesso tempo?
risposta
La risposta di James` è buona e l'ho svalutato, ma vorrei anche provare a suddividere i livelli di logica e presentazione del mio programma. Mantieni le curses parte un sottile strato su una libreria e scrivi un semplice driver che invoca le routine corrette per ricreare l'errore. Quindi puoi tuffarti e fare ciò che è necessario.
Un altro modo in cui posso pensare è creare una funzione chiamata debug
o qualcosa che ti riporti nella schermata normale e invochi pdb. Quindi incollalo appena prima del codice che solleva l'eccezione ed esegui il tuo programma. Qualcosa di simile
def debug(stdscr):
curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()
import pdb; pdb.set_trace()
Apparentemente, questo è simile a quello che si fa con la funzione curses.wrapper
. Viene citato brevemente allo http://www.amk.ca/python/howto/curses/.
Un saggio suggerimento per mantenere separata la logica delle curses e grazie per il puntatore 'curses.wrapper'. –
Prego. –
Non avendo familiarità con Python, questo potrebbe non essere esattamente ciò che si desidera. Ma a quanto pare, winpdb può collegarsi a uno script - proprio come gdb can a un processo in esecuzione (IIUC).
http://winpdb.org/docs/launch-time/
Non fatevi ingannare dal nome, è indipendente dalla piattaforma.
Buon suggerimento. Mi hai battuto su questo. Sarebbe il modo giusto per affrontare questo problema. Utile anche per i GUI e i processi demone. –
Mi ero dimenticato di tutto! –
Non credo sia possibile collegarlo usando il pdb della libreria di base? –
uso pyclewn
è possibile utilizzare pyclewn con vim. o utilizzare PDB-clone, il nucleo della pyclewn suo bene, il suo gdb come, in grado di eseguire il debug remoto
- 1. Usb tether e debug allo stesso tempo
- 2. Android: registrazione e streaming allo stesso tempo
- 3. Più console allo stesso tempo
- 4. Riproduzione e registrazione audio allo stesso tempo
- 5. Chiave primaria e esterna allo stesso tempo
- 6. Utilizzo vibrazione e AVCaptureSession allo stesso tempo
- 7. Lettura FromUri e FromBody allo stesso tempo
- 8. Usando DISTINCT e TOP allo stesso tempo
- 9. Catturare e visualizzare STDOUT allo stesso tempo
- 10. fadeOut() e slideUp() allo stesso tempo?
- 11. jQuery - oggetto e funzione allo stesso tempo?
- 12. Estensibile e Pattern UIImmagine allo stesso tempo
- 13. CSS3: come ruotare e ridimensionare un img allo stesso tempo?
- 14. Strumento in esecuzione-> leaks e debugger console allo stesso tempo in xcode
- 15. Selenium più schede allo stesso tempo
- 16. GPS Usa e Network Provider allo stesso tempo in Android
- 17. Chiamate ajax multiple allo stesso tempo
- 18. Postback asincroni multipli allo stesso tempo - ASP.NET
- 19. stampa più interi contemporaneamente allo stesso tempo
- 20. Scorri più div allo stesso tempo
- 21. Ajax più richieste allo stesso tempo
- 22. Transazioni multiple PayPal allo stesso tempo
- 23. Sostituire 2 stringhe allo stesso tempo?
- 24. Python Incrementa due stringhe allo stesso tempo
- 25. facendo numerosi puntatori NULL allo stesso tempo
- 26. Due simulatori iPhone allo stesso tempo?
- 27. Riprodurre più suoni allo stesso tempo
- 28. Posso rebase e squash commit allo stesso tempo?
- 29. jQuery alternare entrambi "slide" e animazioni "fade", allo stesso tempo
- 30. Lavora con Git e SVN allo stesso tempo
penso che ci potrebbe essere http://wiki.python.org/moin/PythonDebuggers Informazioni utili –
ho ottenuto una risata al titolo di questo. Sì, debugging e imprecazioni sembrano andare insieme nella mia mente. – HLGEM