Débugger un script python
Si comme moi, vous utilisez un simple éditeur de texte du genre geany pour écrire vos scripts et programmes en python, il y a des chances que vous fassiez comme moi et que vous utilisiez l’instruction print pour débugger vos programmes. Ca fonctionne très bien pour autant que le programme ne soit pas trop long et surtout que le bug ne soit pas trop vicieux. Il existe toujours la possibilité d’utiliser un IDE du genre Eric, pyCharm ou encore WingIDE mais les meilleurs ne sont pas gratuits et je ne ressens pas l’utilité d’utiliser de tels programmes.
Pourtant il y a moyen de débugger simplement son programme en utilisant pdb, le Python Debugger. Ceux qui ont déjà programmé en C ou en C++ verront une ressemblance avec gdb.
De façon basique, le débugger peut s’appeler de deux manières.
La première consiste à lancer le débugger puis à tester le programme dans celui-ci:
$ python Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import pdb >>> import mon_programme >>> mon_programme.main()
On importe le débugger ainsi que le programme que vous voulez tester sous forme de module. Ensuite on appelle la fonction que l’on veut tester. Dans l’exemple ici, je veux tester la fonction main() de mon programme.
La seconde méthode qui est celle que j’utilise parce que je la trouve plus simple à mettre en oeuvre, est d’insérer la ligne suivante dans mon code là où je veux qu’il s’arrête (insertion d’un breakpoint). à ce moment, le prompt pdb s’affiche et je n’ai plus qu’à entrer les commandes du débugger que je veux utiliser.
import pdb; pdb.set_trace();
Les commandes du débugger permettent d’exécuter les lignes de code une à une, d’exécuter un ensemble de lignes, de mettre des breakpoints conditionnels ou non, d’afficher le contenu d’une variable et plein d’autres choses. Je vous renvoie à la documentation sur pdb pour les détails sur les commandes disponibles dans le débugger et plus généralement sur le débugger lui-même.
Posted: juillet 22nd, 2011 under python.
Comments: 1