Domanda

sto chiamando python -m pdb myapp.py, Quando un'eccezione incendi, e mi piacerebbe normalmente ributtato all'interprete PPB per studiare il problema. Tuttavia questa eccezione viene gettata dopo ho chiamato attraverso curses.wrapper() e entrato in modalità maledizioni, rendendo l'interprete pdb inutile. Come posso ovviare a questo?

È stato utile?

Soluzione

James` risposta è una buona e ho upvoted, ma mi piacerebbe anche prendere in considerazione cercando di dividere gli strati di logica e presentazione del mio programma. Mantenere la parte maledizioni uno strato sottile sulla cima di una biblioteca e di scrivere un semplice driver che richiama le routine corrette per ricreare l'errore. Poi si può immergersi e fare ciò che è necessario.

Un altro modo mi viene in mente è quello di creare una funzione chiamata debug o qualcosa che si getta di nuovo nella schermata regolare e invoca PPB. Poi bastone appena prima del codice che genera l'eccezione ed eseguire il programma. Qualcosa di simile

def debug(stdscr):
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()
    import pdb; pdb.set_trace()

A quanto pare, questo è simile a ciò che viene fatto con la funzione curses.wrapper. E 'accennato brevemente a http://www.amk.ca/python/howto/curses/.

Altri suggerimenti

Non avere familiarità con Python, questo potrebbe non essere esattamente quello che vuoi. Ma a quanto pare, Winpdb può collegare a uno script - proprio come gdb lattina a un processo in esecuzione (IIUC).

http://winpdb.org/docs/launch-time/

Non fatevi ingannare dal nome, è indipendente dalla piattaforma.

utilizzare pyclewn

è possibile utilizzare pyclewn con vim. o utilizzare PDB-clone, il nucleo di pyclewn il suo bene, è come gdb, può debug remoto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top