Después de que el programa Python informa un error y se bloquea, Little Cheese le dice cómo volver a la posición de bloqueo.

Supongamos que tenemos un programa que lee datos de Redis y extrae el campo de nombre dentro después de analizar:
Inserte la descripción de la imagen aquí

La lógica del código en sí es muy simple. Lee los datos uno por uno de Redis. Los datos leídos son una cadena JSON, así que primero usa json.loads para analizarlos en un diccionario. Luego lea el valor correspondiente al nombre en el diccionario. Siga leyendo hasta que la lista de Redis esté vacía.

Ejecútelo y veamos:
Inserte la descripción de la imagen aquí

Se informa de un error, lo que indica que hay un problema con un dato en Redis. Desea ver estos datos problemáticos, pero ahora el programa se ha bloqueado y el proceso ha terminado, estos datos problemáticos se pierden permanentemente. Nunca más sabrás cómo se ve.

Los amigos que han jugado "Fire Emblem-Wind, Flower, Snow and Moon" saben que el protagonista tiene una habilidad llamada Pulsation of the Moment. Si su compañero de equipo muere, puede revertir el tiempo y regresar antes de que el compañero de equipo fuera asesinado, cambiando así el destino del compañero de equipo.

Entonces, en Python, ¿hay alguna forma en que podamos revivir el programa y ver la línea de código que causó que el programa informara un error? Si está utilizando python3 xxx.py para ejecutar el programa, entonces, a menos que pueda volver a importar los datos ahora, no lo sabrá.

Sin embargo, si usa el siguiente comando: python3 -i xxx.py para iniciar el programa, entonces el mundo es diferente y su programa tiene la capacidad de devolverlo a la vida. Puede volver al lugar del accidente.

Restauremos los datos de Redis (por supuesto, es posible que no pueda restaurarlos en el entorno de producción. Pero ahora puedo responder a los datos de muestra del artículo _ )

Luego use python3 -i read_name.py para volver a ejecutar el programa:
Inserte la descripción de la imagen aquí

Como puede ver, aunque el programa se ha bloqueado, ha aparecido el entorno interactivo de Python. El proceso no terminó por completo. De esta manera, podemos ingresar instrucciones mágicas para hacer que el programa vuelva al lugar donde se informó el error. Ingrese el comando: el
Inserte la descripción de la imagen aquí
efecto de ejecución se muestra en la siguiente figura:
Inserte la descripción de la imagen aquí

Ahora, hemos regresado a la línea donde se informó el error. El informe de error es que el diccionario de datos no tiene la clave de nombre, así que echemos un vistazo a lo que hay en este diccionario e ingresemos directamente los datos del nombre de la variable:
Inserte la descripción de la imagen aquí

Resultó que este dato cuestionable se escribió como name1.

Resumen
pdb es una herramienta de depuración que viene con Python. La función de depuración de PyCharm que usamos también se basa en pdb.

Supongo que te gusta

Origin blog.csdn.net/waitingwww/article/details/106926132
Recomendado
Clasificación