J'essaie de déboguer un programme Python et j'ai inséré une ligne classique 'import pdb; pdb.set_trace()' dans une fonction, juste avant un appel qui génère une trace de pile. Cependant, cet appel semble être ignoré, c'est-à-dire que rien ne se passe et je ne reçois pas d'invite pdb.Qu'est-ce qui peut entraîner l'ignorance de pdb.set_trace()?
A ce stade du programme, il n'y a qu'un seul thread actif. Aucun correctif de singe du module pdb n'a été détecté.
Toute aide sur ce qui pourrait provoquer l'ignorance de l'appel de set_trace est la bienvenue. Merci.
information Plate-forme: Debian squeeze + python 2.6.5
code extrait:
import threading
print threading.active_count()
import pdb
print pdb
pdb.set_trace()
print "*****"
root_resource.init_publisher() # before changing uid
sortie:
<lots of stuff>
1
<module 'pdb' from '/usr/lib/python2.6/pdb.pyc'>
*****
<stack trace in init_publisher>
Pouvez-vous fournir du code pour reproduire ceci? Est-ce que les appels 'print' fonctionnent à partir de là? Avez-vous essayé 'pdb.pm()'? (http://docs.python.org/library/pdb.html#pdb.pm) – katrielalex
Malheureusement, je ne suis pas capable de reproduire cela facilement (sinon je l'aurais probablement cloué maintenant). print fonctionne, pdb.pm() échoue parce que je n'ai pas trace de pile à ce point (et l'exception est mangée plus tard par une extension C, donc je ne peux pas facilement utiliser pm() et python -i –