Maison > Article > développement back-end > Comment déboguer Python à l'aide de la bibliothèque Pdb et des commandes couramment utilisées
Tout le monde sait que Python est livré avec sa propre bibliothèque Pdb, et il est très pratique d'utiliser Pdb pour déboguer les programmes Python. Cependant, le débogage à distance et le multithreading ne peuvent pas être gérés par Pdb. Voyons comment utiliser la bibliothèque Pdb pour déboguer Python et les commandes couramment utilisées.
Il existe de nombreuses façons d'utiliser Pdb pour déboguer
Les principales façons d'utiliser Pdb pour déboguer les programmes Python sont les trois suivantes ! Ce qui suit présente une par une la ligne de commande
plus le paramètre -m
la ligne de commande pour démarrer le programme cible, ajoutez le paramètre -m, pour que les points d'arrêt soient appelés lorsque testPdb.py est appelé C'est avant la première ligne d'exécution du programme
L'exemple d'affichage qui sera mis en évidence dans cet article débogue de cette manière !
python -m pdb testPdb.py
Débogage dans un environnement interactif Python
>>> import pdb >>> import testPdb >>> pdb.run('testPdb.test()')
Insérer un programme dans le code
Il est plus couramment utilisé pour insérer un programme au milieu du programme, plutôt que de mettre un point d'arrêt dans un IDE général et démarrage du débogage, mais cette méthode est hardcode
if __name__ == "__main__": a = 1 import pdb pdb.set_trace() b = 2 c = a + b print(c)
puis exécutez le script normalement : python testPdb.py
Il sera réglé lorsque vous accédez à pdb.set_trace()
, puis vous pouvez voir l'invite de débogage (Pdb)
La situation de débogage pour le petit programme ci-dessus est la suivante :
Préparez le programme de test
Ensuite, utilisez la première méthode présentée ci-dessus pour déboguer le programme Python afin d'introduire les commandes pdb couramment utilisées, mais avant de commencer, vous devez préparer le code du programme de test :
testFun.py
Il s'agit d'un sous-module qui sera appelé par le module principal. Il est utilisé pour tester si les points d'arrêt peuvent être démarrés à partir du module principal. module lors du débogage à l'aide de Pdb. Suivi dans les sous-modules (les explications suivent)
#!/usr/bin/python # -*- coding: utf-8 -*- def add(a, b): return a + b
testPdb.py
Voici le code du module principal en cours de débogage ci-dessous
#!/usr/bin/python # -*- coding: utf-8 -*- def sub(a, b): return a - b if __name__ == "__main__": print '' import testFun i = 0 a = 1 while(i < 100): a = testFun.add(a, 1) i = i + 1 print "累加结果:", a print "" for letter in 'Pdb': print "当前字母:", letter print "" fruits = ['banana', 'apple', 'mango'] for fruit in fruits: print "当前水果:", fruit print "" ret = 0 for num in range(10, 12): ret = sub(ret, num) print '循环结果:', ret print "" d = {'abc': 123, 123: "abc"} for (k,v) in d.items(): print "当前键值对:", k, '-', v print ""
résume les commandes couramment utilisées
Commandes de base
commande h(elp) : imprimera les commandes disponibles dans la version actuelle de Pdb si vous souhaitez interroger un. commande, vous pouvez saisir h [command]
, par exemple h l
Afficher la commande liste
commande l(ist) : Vous pouvez lister les blocs de code actuellement à exécuter
Gestion des points d'arrêt
b(reak) : Définir un point d'arrêt
Par exemple, b 12 consiste à ajouter un point d'arrêt sur la ligne 9 du script actuel
Par exemple , b sub consiste à ajouter un point d'arrêt à la définition de sous-fonction du script actuel. En plus d'ajouter des points d'arrêt dans le script actuel, vous pouvez cliquer sur
pour définir des points d'arrêt dans d'autres scripts du script actuel. code utilisé ci-dessus à titre d'exemple, b testFun.add
peut être implémenté dans testFun.py Ajoutez un point d'arrêt à la fonction d'ajout dans le script
Si vous utilisez uniquement b, tous les points d'arrêt existants seront affichés
condition bpnumber [condition] : Définir des points d'arrêt conditionnels, tels que la condition 2 a==0, consiste à ajouter la condition "a==0" au deuxième point d'arrêt
cl(ear ) : supprimez le point d'arrêt, s'il y a des paramètres après, il est clairement spécifié. Points d'arrêt ; si aucun paramètre n'est pris, tous les points d'arrêt seront effacés
désactiver/activer : désactiver/activer les points d'arrêt
Contrôle logique du programme
Pour les différentes commandes présentées ci-dessous, vous devez connaître le code et le numéro de ligne du script correspondant, voici donc une capture d'écran montrant les premières lignes de code nécessaire pour le test suivant
c(ont(inue)), let Le programme s'exécute normalement jusqu'à ce qu'il rencontre le prochain point d'arrêt
n(ext), permettant au programme d'exécuter la ligne suivante . Si l'instruction actuelle a un appel de fonction, l'utilisation de n n'entrera pas dans le corps de la fonction appelée
Comme le montre la figure ci-dessous, lorsque le point d'arrêt du script est débogué sur testFun.add(a, 1)
, n continuera à être exécuté et n'entrera pas dans la fonction de testFun.add(a, 1)
, continuez à exécuter s et vous entrerez testFun.add(a, 1)
La définition de la fonction correspondante est à l'intérieur, bien que testFun.add(a, 1)
ne soit pas une fonction définie dans ce script testFun.add
Imprimer les informations importantes
, le paramètre testFun.add
testFun.add
p de
est imprimée et le le débogage est quitté
Résumé
Le processus de débogage à l'aide de Pdb présenté ci-dessus est en fait très simple. L'article montre principalement l'effet en cours à travers des captures d'écran. Si vous lisez simplement l'article, vous n'en aurez aucune idée et vous pourriez même avoir l'impression que les commandes et les résultats dans les captures d'écran sont désordonnés. Cependant, si vous suivez le processus vous-même, cela ne prendra pas une heure, mais l'effet sera. absolument excellent ! Encore une chose, le débogueur de Python est Pdb, qui peut être utilisé pour apprendre le débogueur C gdb sous Linux. Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude et au travail de chacun.
Pour plus d'articles sur la façon d'utiliser la bibliothèque Pdb pour déboguer Python et les commandes couramment utilisées, veuillez faire attention au site Web PHP chinois !