Ich versuche, ein Python-Programm zu debuggen, und ich habe eine klassische 'import pdb; pdb.set_trace()' Zeile in eine Funktion eingefügt, kurz vor einem Aufruf, der einen Stack-Trace generiert. Dieser Aufruf scheint jedoch ignoriert zu werden, d. H. Es passiert nichts und ich erhalte keine pdb-Eingabeaufforderung.was kann dazu führen, dass pdb.set_trace() ignoriert wird?
An diesem Punkt des Programms gibt es nur einen aktiven Thread. Es wurde kein Affe-Patching des pdb-Moduls festgestellt.
Jede Hilfe, die dazu führen könnte, dass der Aufruf von set_trace ignoriert wird, ist willkommen. Vielen Dank.
Plattform Info: Debian Squeeze + Python 2.6.5
-Code-Extrakt:
import threading
print threading.active_count()
import pdb
print pdb
pdb.set_trace()
print "*****"
root_resource.init_publisher() # before changing uid
Ausgang:
<lots of stuff>
1
<module 'pdb' from '/usr/lib/python2.6/pdb.pyc'>
*****
<stack trace in init_publisher>
Können Sie Code bereitstellen, um dies zu reproduzieren? Funktionieren 'print' Anrufe von dort? Hast du 'pdb.pm()' ausprobiert? (http://docs.python.org/library/pdb.html#pdb.pm) – katrielalex
Leider kann ich das nicht einfach reproduzieren (sonst hätte ich es wahrscheinlich schon längst geschafft). Drucken funktioniert, pdb.pm() schlägt fehl, da ich zu diesem Zeitpunkt keine Stack-Trace habe (und die Ausnahme später von einer C-Erweiterung gegessen wird, kann ich nicht einfach pm() und python -i –