El uso de un depurador y maldiciones al mismo tiempo?
-
19-09-2019 - |
Pregunta
Estoy llamando python -m pdb myapp.py
, cuando un fuego de excepción, y normalmente estaría echada hacia atrás al intérprete pdb para investigar el problema. Sin embargo, esta excepción está siendo lanzada después de que he llamado a través curses.wrapper()
y entré en el modo de maldiciones, lo que hace que el intérprete AP inútil. ¿Cómo puedo evitar esto?
Solución
James` respuesta es una buena y he upvoted, pero yo también lo consideraría tratar de dividir las capas de lógica y de la presentación de mi programa. Mantenga la parte maldiciones una fina capa en la parte superior de una biblioteca y escribir un controlador simple que invoca las rutinas correctas para recrear el error. A continuación, puede sumergirse y hacer lo necesario.
Otra forma que se me ocurre es crear una función llamada debug
o algo que se lanza de nuevo a la pantalla normal e invoca AP. A continuación pegarlo justo antes del código que plantea la excepción y ejecutar el programa. Algo así como
def debug(stdscr):
curses.nocbreak()
stdscr.keypad(0)
curses.echo()
curses.endwin()
import pdb; pdb.set_trace()
Al parecer, esto es similar a lo que se hace con la función curses.wrapper
. Se menciona brevemente en http://www.amk.ca/python/howto/curses/.
Otros consejos
No estar familiarizado con Python, esto puede no ser exactamente lo que quiere. Pero, al parecer, Winpdb se puede unir a una secuencia de comandos - al igual que el BGF lata a un proceso en ejecución (IIUC).
http://winpdb.org/docs/launch-time/
No se deje engañar por el nombre, es independiente de la plataforma.
utilizar pyclewn
pyclewn con vim. o utilizar pdb-clon, el núcleo de pyclewn su buena, es como GDB, puede depurar a distancia