OVH Cloud OVH Cloud

inspecter simplement une fonction

2 réponses
Avatar
Cémoi
Bonjour,


existe t'il un moyen simple d'inspecter interactivement une fonction qui
plante en runtime, de la même maniere qu'il est possible de le faire
dans la partie principale du programme via PYTHONINSPECT ou l'option -i
au lancement du script ?


Merci pour vos réponses,



Laurent

2 réponses

Avatar
Alexandre Fayolle
Le 11-07-2006, Cémoi nous disait:
Bonjour,


existe t'il un moyen simple d'inspecter interactivement une fonction qui
plante en runtime, de la même maniere qu'il est possible de le faire
dans la partie principale du programme via PYTHONINSPECT ou l'option -i
au lancement du script ?


Tu devrais pouvoir mettre ton script dans un try...except et dans le
bloc except: appelle pdb.pm() (non testé)

--
Alexandre Fayolle LOGILAB, Paris (France)
Formations Python, Zope, Plone, Debian: http://www.logilab.fr/formations
Développement logiciel sur mesure: http://www.logilab.fr/services
Python et calcul scientifique: http://www.logilab.fr/science

Avatar
Cémoi


Tu devrais pouvoir mettre ton script dans un try...except et dans le
bloc except: appelle pdb.pm() (non testé)

on peut lancer le script avec l'option -i ou définir la variable

d'environnement PYTHONINSPECT avec une chaine non nulle; une fois que la
fonction s'est plantée et que l'interpreteur reprend la main, il suffit
d'importer pdb et d'executer pdb.pm ().

Ca fonctionne tres bien, pas besoin d'ajouter de couple try/except, et
ça correspond exactement à ce que je souhaitais faire.
L'instruction list permet de savoir ou ça s'est planté.
dir () reste valide et permet d'afficher l'espace de noms de la fonction.
Il faut faire ensuite attention que certaines variables peuvent etre
"écrasées" par pdb: si on veut afficher la variable j, il faut faire un
'print j' plutot que 'j' tout seul qui dans ce cas sera reconnu comme
l'instruction jump.

Merci pour ton aide,


Laurent