Utilizzando un debugger e maledizioni, allo stesso tempo?
-
19-09-2019 - |
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?
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