(Il existe un débuggeur ligne par ligne en python ? Un gdb pour python, en fait)
oui ça s'appelle pdb (c'est un module).
L'utilisation courante est d'insérer dans ton code une ligne:
import pdb; pdb.set_trace()
Sinon tu peux aussi le lancer avec une traceback (en post-mortem).
Il y des environnements qui font ça pour toi.
Dans les framework web (pylons, werkzeug, zope avec pdbdebugmode) c'est avec ça qu'est fait la console de debug en cas d'exception non interceptée.
en gros pour l'interception automatique ça revient à ça:
try:
my_func(...)
except SystemExit:
raise # Reraise the system exit exception
except Exception, error:
from sys import exc_info
import pdb
pdb.post_mortem(exc_info()[2])
raise
enfin avec un shell lancé depuis emacs, celui-ci peut reconnaitre l'arrivée sur une ligne pdb et affiche le code source de la frame en cours dans un autre panneau.
[^] # Re: Avantage
Posté par Bertrand Mathieu . En réponse à la dépêche Publication de la version 2009Q2 de Unladen Swallow. Évalué à 5.
oui ça s'appelle pdb (c'est un module).
L'utilisation courante est d'insérer dans ton code une ligne:
import pdb; pdb.set_trace()
Sinon tu peux aussi le lancer avec une traceback (en post-mortem).
Il y des environnements qui font ça pour toi.
Dans les framework web (pylons, werkzeug, zope avec pdbdebugmode) c'est avec ça qu'est fait la console de debug en cas d'exception non interceptée.
en gros pour l'interception automatique ça revient à ça:
try:
my_func(...)
except SystemExit:
raise # Reraise the system exit exception
except Exception, error:
from sys import exc_info
import pdb
pdb.post_mortem(exc_info()[2])
raise
enfin avec un shell lancé depuis emacs, celui-ci peut reconnaitre l'arrivée sur une ligne pdb et affiche le code source de la frame en cours dans un autre panneau.