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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top