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
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