Débogage Python : journalisation et pdb (exemple d'analyse 2)

乌拉乌拉~
Libérer: 2018-08-23 13:38:08
original
1354 Les gens l'ont consulté

Dans l'article précédent, nous avons appris pourquoi python doit être débogué et introduit deux méthodes de débogage de python. Cependant, la méthode de débogage ne peut pas être expliquée dans un seul article, nous en parlerons donc dans cet article. les deux méthodes de débogage restantes. J'espère que ces méthodes de débogage pourront vous être utiles et vous aider à avancer plus rapidement sur la voie de l'apprentissage de Python.

logging

La troisième méthode est la suivante : remplacer print() par logging est la troisième méthode. Par rapport à assert, la journalisation ne générera pas d'erreur, et cela peut l'être. sortie dans un fichier :

import logging
s = '0'
n = int(s)
logging.info('n = %d' % n)
print(10 / n)
Copier après la connexion

logging.info() peut générer un morceau de texte. Exécutez et ne trouvez aucune information sauf ZeroDivisionError. Que se passe-t-il?

Ne vous inquiétez pas, ajoutez une ligne de configuration après la journalisation de l'importation et réessayez :

import logging
logging.basicConfig(level=logging.INFO)
Copier après la connexion

Voir le résultat :

$ python err.py
INFO:root:n = 0
Traceback (most recent call last):
  File "err.py", line 8, in <module>
    print(10 / n)
ZeroDivisionError: division by zero
Copier après la connexion

C'est l'avantage de logging, il vous permet de spécifier le niveau d'informations de journalisation, y compris le débogage, les informations, l'avertissement, l'erreur, etc. Lorsque nous spécifions level=INFO, logging.debug ne fonctionnera pas. De la même manière, après avoir spécifié level=WARNING, le débogage et les informations ne fonctionneront pas. De cette façon, vous pouvez générer en toute sécurité différents niveaux d'informations sans les supprimer, et enfin contrôler quel niveau d'informations est généré.

Un autre avantage de la journalisation est que grâce à une configuration simple, une instruction peut être sortie vers différents endroits en même temps, tels que la console et les fichiers.

pdb

La quatrième façon consiste à démarrer le débogueur Python pdb, à laisser le programme s'exécuter en mode une seule étape et vous pourrez vérifier l'état de fonctionnement à tout moment. On prépare d'abord le programme

# err.py
s = &#39;0&#39;
n = int(s)
print(10 / n)
Copier après la connexion

puis on le démarre :

$ python -m pdb err.py
> /Users/michael/Github/learn-python3/samples/debug/err.py(2)<module>()
-> s = &#39;0&#39;
Copier après la connexion

Après avoir démarré avec le paramètre -m pdb, pdb localise le code à exécuter ensuite -> ;s = '0'. Saisissez la commande l pour afficher le code :

 (Pdb) l
  1     # err.py
  2  -> s = &#39;0&#39;
  3     n = int(s)
  4     print(10 / n)
Copier après la connexion

Saisissez la commande n pour parcourir le code :

(Pdb) n
> /Users/michael/Github/learn-python3/samples/debug/err.py(3)<module>()
-> n = int(s)
(Pdb) n
> /Users/michael/Github/learn-python3/samples/debug/err.py(4)<module>()
-> print(10 / n)
Copier après la connexion

Vous pouvez saisir la commande p à tout moment pour visualiser la variable nom :

(Pdb) p s
&#39;0&#39;
(Pdb) p n
0
Copier après la connexion

Entrez la commande q pour terminer le débogage et quitter le programme :

(Pdb) q
Copier après la connexion

(Cette méthode de débogage en ligne de commande via pdb est théoriquement universelle, mais elle est vraiment trop gênant)

Ce qui précède est tout le contenu décrit dans cet article. Cet article présente principalement les connaissances pertinentes du débogage python. . J'espère que ce que j'ai décrit dans cet article vous sera utile et vous facilitera l'apprentissage de Python.

Pour plus de connaissances connexes, veuillez visiter la colonne Tutoriel Python du site Web php chinois.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!