Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

Maîtriser le débogage Python : techniques efficaces et meilleures pratiques

Maîtriser le débogage Python : techniques efficaces et meilleures pratiques

Si vous faites partie de ceux qui utilisent print pour déboguer, je ne vous juge pas. Apprendre Python est dur. Programmer est dur. La vie est dure. Je comprends qu'apprendre encore une chose semble fatiguant si vous galérez déjà. Et ajouter ce print… c'est juste plus facile. Petite confession : je le fais encore tout le temps. Ce n'est pas aussi terrible que certains le disent.

Cela dit, je vais vous apprendre un petit truc tout aussi simple qu'ajouter des prints, mais qui vous donne des pouvoirs de débogage infinis — et vous permettra de conquérir le monde, si besoin.

Définir un point d'arrêt (breakpoint) en Python

Pas besoin d'IDE pour déboguer proprement. Ce truc marche partout, même dans l'éditeur le plus simple, et même dans Jupyter Notebooks.

Le truc : définir un point d'arrêt avec l'instruction breakpoint(). Insérez-le dans votre code, peu importe l'éditeur ou l'IDE, à l'endroit où vous mettriez normalement ce print pénible.

Que se passe-t-il ? Testons ! Créez un programme simple :

def add_two(x):
    return x + 2

for i in range(1, 10):
    a = add_two(i)
    breakpoint()
    print(a)

Quand vous lancez peu importe où (REPL, ligne de commande, IDE), vous tombez dans le débogueur Python : pdb. Et maintenant ?

Utiliser le débogueur Python

Lancement du programme ci-dessus donne :

$ python3 breakpointing.py
> /home/erik/breakpointing.py(7)<module>()
-> print(a)
(Pdb) 

Trois choses à noter :

Le débogueur Python est un shell Python entièrement fonctionnel, comme le REPL.

À ce stade, on peut inspecter l'environnement. Voyons la valeur de a :

(Pdb) print(a)
3
(Pdb) print(i)
1

Au lieu de print, on peut utiliser la commande pdb p :

(Pdb) p a
3
(Pdb) p i
1

Exécuter la ligne suivante

Pour lancer la ligne suivante, deux options :

Pour clarifier : step entre dans un appel de fonction et s'arrête dedans. next exécute la fonction jusqu'à son retour, et s'arrête à la ligne suivante.

Autres débogueurs/IDEs appellent ça « step into » (step) et « step over » (next).

Testons :

$ python3 breakpointing.py
-> print(a)
(Pdb) s
3
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) n
-> breakpoint()
(Pdb) n
-> print(a)
(Pdb) n
4
-> for i in range(1, 10):
(Pdb) s
-> a = add_two(i)
(Pdb) s
--Call--
-> def add_two(x):
(Pdb) s
-> return x + 2
(Pdb) s
--Return--
5
-> return x + 2
(Pdb) s
-> breakpoint()
(Pdb)

On voit : d'abord n (step over) sur l'appel add_two. Deuxième fois, s (step into) dans la fonction.

Commandes du débogueur Python

Plus de commandes à tester vous-même. Les plus utiles :

Pour doc complète : page officielle débogueur Python.

Continuer à apprendre

Bien que très pratique, ça vaut le coup de plonger dans le débogueur de votre IDE. Si utilisateur VSCode, j'ai écrit un tutoriel sur le débogage Python dans VSCode.

Maîtriser le débogage Python : techniques efficaces et meilleures pratiques

Python

  1. Maîtriser les E/S et l'importation de modules en Python : Guide pratique
  2. Fonction Python print() : Guide pratique avec exemples
  3. Maîtriser les opérations sur chaînes Python : Replace, Join, Split, Reverse et Conversion de casse
  4. Python time.sleep() : comment ajouter des délais dans votre code (exemple)
  5. Python print sans saut de ligne : maîtriser le paramètre end et autres techniques
  6. Maximiser les profits avec la gestion de flotte connectée étendue de Ford
  7. Accélérer la Production : Comment le Prototypage Améliore Votre Processus de Fabrication
  8. 5 stratégies éprouvées pour améliorer la qualité des pièces en tôle
  9. 3 Stratégies Prouvées pour Optimiser Votre Plan de Maintenance d'Équipements Industriels