Supongamos que tengo un programa python donde assert se ha usado para definir cómo deberían ser las cosas, y me gustaría capturar anomalías con read-eval-loop en lugar de tener AssertionError
.¿Puedo forzar la depuración de python en AssertionError?
Por supuesto, podría haber
if (reality!=expectation):
print("assertion failed");
import pdb; pdb.set_trace();
pero eso es mucho más feo en el código de una llanura assert(reality==expectation)
.
Podría tener pdb.set_trace()
llamado en un bloque except:
en el nivel superior, pero entonces habría perdido todo el contexto de la falla, ¿no? (Quiero decir, stacktrace podría recuperarse del objeto de excepción, pero no de los valores de argumento, etc.)
¿Hay algo como un indicador de línea de comandos --magic
que podría convertir el intérprete python3 en lo que necesito?
¿usar eclipse y ejecutarlo en modo de depuración con un punto de interrupción? –
@JoranBeasley: No siempre tienes un IDE a mano. por ejemplo, cuando inicia sesión en un shell ssh. – Constantinius
luego use pdb desde la línea de comando y use puntos de interrupción ... http://www.doughellmann.com/PyMOTW/pdb/ 'python -m pdb somescript.py' es su' --magic' –