python-pdb

Rédigé par Paulo Aucun commentaire
Classé dans : Python Mots clés : debug, pdb

  

import pdb; pdb.set_trace()

 

Debugger en Python : import du module pdb

Il s'agit simplement de rajouter la ligne suivante dans votre code, et de le relancer.
Celui-ci s'arretera sur cette ligne et ouvrira un shell special :

import pdb; pdb.set_trace()

Commandes pricipales du debugger :

  • a    : Retourne les arguments de la fonction courante
  • l :   Liste quelques lignes de code avant et après là où vous vous trouver. Utile pour se resituer dans le contexte du programme. ‘l’ pour ‘list’.
  •  n :    Exécute la ligne suivante. Vous pouvez ainsi continuer l’exécution du programme de bout en bout, ligne par ligne, et le tester en entier. ‘n’ pour ‘next’.
  •  s :    Si votre ligne contient un appel de fonction ou de méthode, rentre dans à l’intérieur. ‘s’ pour ‘step in’.
  •  r    : Si vous êtes dans une fonction ou une méthode, celà permet d’en sortir et de passer dans le scope du dessus. ‘r’ pour ‘return’.
  • w     : retourne la pile des modules dans lequel vous êtes (incompréhensible : le mieux c'est d'essayer...)
  • unt: Si vous êtes à la dernière ligne d’une boucle, permet de reprendre l’exécution jusqu’à la sortie de la boucle. ‘unt’ pour ‘until’.
  • q:      Quitte brutalement le programme en le faisant crasher. ‘q’ pour ‘quit’.
  • c:      Quitte le debugger et continue l’exécution du programme normalement. Tous les changements que vous avez fait dans le code sont pris en compte. ‘c’ pour ‘continue’.

Pour utiliser une commande, il suffit de taper la lettre et d’appuyer sur entrée. Si vous appuyez sur entrée sans rien saisir, la commande précédente est exécutée, ce qui vous évitera de spammer le shell de commandes n.

Breakpoint conditionnel :

On peut lancer pdb de façon conditionel, du genre :

#
if truc:
    import pdb; pdb.set_trace()

Mais on peut aussi, une fois dans le déboggeur, on peut uliliser la commande 'b' :

#
b 50, age == 18

Ceci va mettre un breakpoint à la ligne 50 qui s’activera uniquement si age vaut 18.
Merci : http://sametmax.com/breakpoint-conditionnels/

C'est tout.

Articles issus de l'excellent site : http://sametmax.com/debugger-en-python-les-bases-de-pdb/

Les commentaires sont fermés.