Catégories
Python

Débugger Python avec pdb

Principe et outils

Pour debugger un script Python, il est possible d’utiliser plusieurs types de debugger (dont notre favoris VSCode avec l’extension Python), mais il existe également un outil de la librairie standard pdb qui permet de parcourir le code, arguments, variables etc en CLI (ce qui peut s’avérer utile pour débugger sur un serveur par ex).

Pour l’utiliser il suffit d’importer la lib pdb puis d’utiliser la méthode statique set_trace() pour arrêter l’exécution du script à un endroit donné du code.

# Python < 3.7
import pdb;
pdb.set_trace()

# Python >= 3.7
breakpoint

Interagir avec pdb

une fois la ligne comportant set_trace() atteinte, une invite de commande nous redonne la main pour interagir avec le code.

Commandes de base

h : help
h X : aide sur la commande X
l : (line) affichage des 11 lignes entourant la ligne actuelle
w : (where am I) nom de fichier, fonction, et ligne où est le curseur
a : (arguments) liste des arguments passés à la fonction courante
p X : (print) évalue la variable ou expression X
dir(X) : liste les propriétés et méthodes de l’objet X

Déplacement du curseur

n : (next instruction) avance à l’instruction suivante
s : (step into) avance et descend dans l’instruction suivante
r : (return) continue l’exécution jusqu’au prochain return

Breakpoints ou points d’arrêts

b : (breakpoints) liste les points d’arrêts
b [([filename:]lineno | function) [, condition]] : pour ajouter un breakpoint
c : (continue) poursuit l’exécution jusqu’au prochain breakpoint
cl : (clear) supprime tous les breakpoints
enable/disable bpn : active/désactive le breakpoint numéro bpn

Liens

blog post complet