Débogage d'un code python

Définition

Un débogueur permet d'exécuter le code ligne par ligne. A chaque ligne on peut avoir accès aux valeurs des variables.

Exemple

On veut déboguer le code suivant :

1
#!/usr/bin/python
2
# -*- coding utf-8
3
"""
4
Utilisation du debogeur pdb de python
5
"""
6
7
8
def fct_add(val_op1, val_op2):
9
    """
10
    cette fonction additionne deux nombres
11
    paramètres
12
    ------------
13
    val_op1 : int
14
    val_op2 : int
15
    valeur de retour
16
    ------------
17
    int égal à la somme des deux nombrs
18
    """
19
    val = val_op1 - val_op2
20
    return val
21
22
23
if __name__ == '__main__':
24
    ma_val1 = int(input("Première valeur "))
25
    ma_val2 = int(input("Seconde valeur "))
26
    resultat = fct_add(ma_val1, ma_val2)
27
    print("Votre résultat est", resultat)
28

On enregistre le programme précédent dans le dossier c :/tmp. On lance l'invite de commande de windows. On entre les commandes suivantes dans l'invite de commande :

1
python -m pdb c:\tmp\pdb_ex1.py

Le débogueur est lancé et s'arrête avant la première ligne du programme à exécuter.

Le résultat de la commande précédente. Le triple "  (""") correspond à ligne 5 du programme précédent.

On peut exécuter les 4 premières lignes du programme en entrant 4 fois la lettre n suivie de la touche Entrée (ou Rc) dans la console python.

La ligne ma_val2 = 25 n'est pas encore exécutée.

On peut avoir la valeur des variables en entrant simplement leur nom dans la console.

La valeur de la variable nommée ma_val1 est de 13. La valeur de la variable nommée ma_val2 n'est pas encore connue donc lorsqu'on demande sa valeur un message d'erreur s'affiche : * NameError: name 'ma_val2' is not defined

La fin du programme est atteinte lorsque --Return-- s'affiche.

On peut entrer 2 fois la lettre n suivie de la touche Entrée (ou Rc) dans la console python pour relancer le débugueur avec le même programme.