Une fois que le programme Python a signalé une erreur et s'est bloqué, Little Cheese vous dit comment revenir à la position de crash?

Supposons que nous ayons un programme qui lit les données de Redis et extrait le champ de nom à l'intérieur après l'analyse:
Insérez la description de l'image ici

La logique du code lui-même est très simple. Lisez les données une par une à partir de Redis. Les données lues sont une chaîne JSON, utilisez donc d'abord json.loads pour les analyser dans un dictionnaire. Ensuite, lisez la valeur correspondant au nom dans le dictionnaire. Continuez à lire jusqu'à ce que la liste Redis soit vide.

Lançons-le et voyons:
Insérez la description de l'image ici

Une erreur est signalée, indiquant qu'il y a un problème avec un élément de données dans Redis. Vous voulez examiner ces données problématiques, mais maintenant que le programme est tombé en panne et que le processus est terminé, ces données problématiques sont définitivement perdues. Vous ne saurez plus jamais à quoi cela ressemble.

Les amis qui ont joué à "Fire Emblem-Wind, Flower, Snow and Moon" savent que le protagoniste possède une compétence appelée Pulsation of the Moment. Si son coéquipier meurt, il peut inverser l'heure et revenir avant que le coéquipier ne soit tué, changeant ainsi le sort du coéquipier.

Donc, en Python, existe-t-il un moyen de redonner vie au programme et de voir la ligne de code qui a provoqué le signalement d'une erreur par le programme? Si vous utilisez python3 xxx.py pour exécuter le programme, alors en effet, à moins que vous ne puissiez réimporter les données tout à l'heure, vous ne le saurez pas.

Cependant, si vous utilisez la commande suivante: python3 -i xxx.py pour démarrer le programme, alors le monde est différent et votre programme a la capacité de le ramener à la vie. Vous pouvez retourner sur les lieux de l'accident.

Restaurons les données Redis (bien sûr, vous ne pourrez peut-être pas les restaurer dans l'environnement de production. Mais maintenant je peux répondre aux exemples de données de l'article _ )

Ensuite, utilisez python3 -i nom_lecture.py pour réexécuter le programme:
Insérez la description de l'image ici

Comme vous pouvez le voir, bien que le programme soit tombé en panne, l'environnement interactif de Python est apparu. Le processus ne s'est pas complètement terminé. De cette façon, nous pouvons entrer des instructions magiques pour que le programme retourne à l'endroit où l'erreur a été signalée. Entrez la commande: l'
Insérez la description de l'image ici
effet courant est indiqué dans la figure ci-dessous:
Insérez la description de l'image ici

Maintenant, nous sommes revenus à la ligne où l'erreur a été signalée. Le rapport d'erreur est que le dictionnaire de données n'a pas la clé de nom, alors jetons un coup d'œil à ce qu'il y a dans ce dictionnaire et saisissons directement les données du nom de la variable:
Insérez la description de l'image ici

Il s'est avéré que cette donnée douteuse était écrite sous le nom de name1.

Résumé
pdb est un outil de débogage fourni avec Python. La fonction de débogage de PyCharm que nous utilisons est également basée sur pdb.

Je suppose que tu aimes

Origine blog.csdn.net/waitingwww/article/details/106926132
conseillé
Classement