Débogage en Python
Konrad HINSEN
Centre de Biophysique Moléculaire (Orléans)
et
Synchrotron Soleil (St Aubin)
Outils de débogage Python
Module pdb dans la bibliothèque Python.
Winpdb (http://winpdb.org/), un débogueur graphique (aucun
lien avec le Windows de Microsoft !)
PuDB (http://pypi.python.org/pypi/pudb), un débogueur
sémi-graphique.
pydbgr (http://code.google.com/p/pydbgr/), une version
améliorée de pdb.
IDLE (fait partie de la distribution Python)
PyDev (http://pydev.org/), une extension pour Eclipse
WingIDE (http://wingware.com/)
Komodo IDE (http://www.activestate.com/komodo/features/)
Environnements de développement avec débogueur :
Débogage post-mortem
Situation fréquente: votre code se plante avec une exception et vous
voulez savoir pourquoi.
Options :
1)!Faites tourner votre programme sous contrôle d’un débogueur
!et attendez l’exception :
!python -m pdb mon_script.py
2)!Faites tourner votre programme dans un environnement interactif
!(python -i, ipython, IDLE, ...) et démarrez pdb après l’exception:
!import pdb
!pdb.pm()
En Python, le débogage post-mortem est beaucoup plus utile que
dans un langage compilé.
Astuce
def info(type, value, tb):
import sys
if hasattr(sys, 'ps1') or not sys.stderr.isatty():
sys.__excepthook__(type, value, tb)
else:
import traceback, pdb
traceback.print_exception(type, value, tb)
print
pdb.pm()
import sys
sys.excepthook = info
del info
del sys
Créez le fichier $HOME/.local/lib/python2.6/site-packages/sitecustomize.py
avec le contenu suivant :
Python lance alors automatiquement pdb à chaque exception non traitée.
Attention : cette astuce ne marche pas sous Ubuntu !!!
Il faut modifier /usr/lib/python2.6/sitecustomize.py
Points de suspension
Situation fréquente : votre code produit des résultats suspects.
- Démarrez votre programme sous contrôle d’un débogueur (pdb:
lancez avec “python -m pdb”, IDLE: menu “debugger”)
- Mettez un point de suspension (pdb: b, IDLE: clic droit) au début de
la partie suspecte
- Continuez l’exécution (pdb: c, IDLE: Go) jusqu’au point de
suspension, puis exécuter ligne par ligne
Exécution ligne par ligne :
- “Step” (pdb: s) s’arrête à la prochaine occasion, ce qui est le plus
souvent le début d’une fonction qu’on appelle.
- “Over” (pdb: n) exécute une commande et s’arrête après.
- “Out” (pdb: r) s’arrête à la fin de la fonction.
1 / 8 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !