Estoy buscando una forma de depurar una excepción de python "retrospectivamente". Básicamente, si mi programa genera una excepción que no se gestiona, quiero que guarde el estado del programa para que pueda volver más tarde y solucionar el problema.¿Cómo puedo depurar retrospectivamente una excepción de python?
He echado un vistazo a los documentos pdb, y parece que puede hacerlo, pero solo si puede interactuar con el programa en el momento de la excepción. Esto no funcionará para mí ya que el programa se ejecutará en segundo plano (sin un terminal de control).
Mi primer enfoque (¡condenado!) Fue poner un bloque try/except en el nivel más alto de mi programa, y en el bloque except extraer el objeto traceback de la excepción actual y escribirlo en disco usando pickle. Planeé escribir un programa separado que desharía el objeto y usar pdb.post_mortem para depurar el programa bloqueado. Pero los objetos de rastreo no son seleccionables, pero no esperaría que funcionaran de todos modos, ya que no salvaría todo el estado del programa.
Esto no resuelve su problema de ninguna manera, pero en lugar de envolver todo su programa en una declaración 'try', podría ser mejor configurar un controlador para excepciones no detectadas asignándolo a [' sys.excepthook'] (http://docs.python.org/library/sys.html#sys.excepthook). – aaronasterling