Le module pdb définit un débogueur interactif de code source
pour les programmes Python. Il permet d'établir des points d'arrêt (breakpoints),
éventuellement conditionnels, d'éxecuter pas à pas les lignes de source, d'inspecter
l'état de la pile, de voir le code source et d'évaluer du code Python quelconque dans
le contexte d'une instance d'activation (stack frame) quelconque. Il sert aussi au
débogage post-mortem et peut être appelé sous contrôle d'un programme.
Le débogueur est extensible --- il est en fait défini comme la classe
Pdb.
Ceci n'est pas documenté, mais on le comprend aisément à partir des sources.
L'interface d'extension utilise les modules bdb (non documenté) et
cmd.
Une version à fenêtres du débogueur existe aussi --- c'est le module
wdb, qui a besoin de
stdwin.
L'invite du débogueur est "(Pdb) ".
Voici une session d'utilisation typique du débogueur pour exécuter un programme:
pdb.py peut aussi être invoqué comme un
script pour déboguer d'autres scripts. Par exemple:
L'usage pour l'inspection d'un programme avorté est:
Le module définit les fonctions suivantes; chacune permet de rentrer dans le débogueur
de façon légèrement différente:
>>> import pdb
>>> import mon_module
>>> pdb.run('mon_module.test()')
> <string>(0)?()
(Pdb) continue
> <string>(1)?()
(Pdb) continue
NameError: 'spam'
> <string>(1)?()
(Pdb)
python /usr/local/lib/python1.5/pdb.py mon_script.py
>>> import pdb
>>> import mon_module
>>> mon_module.test()
Traceback (innermost last):
File "<stdin>", line 1, in ?
File "./mon_module.py", line 4, in test
test2()
File "./mon_module.py", line 3, in test2
print spam
NameError: spam
>>> pdb.pm()
> ./mon_module.py(3)test2()
-> print spam
(Pdb)
run(instruction[, globales[, locales]])
runeval(expression[, globales[, locales]])
runcall(fonction[, argument, ...])
set_trace()
post_mortem(traceback)
pm()
sys.last_traceback.
Sous-sections