Ich habe ein [großes] Programm, das plötzlich ein Problem irgendwo in einer Endlosschleife hat. Ich kann diese Schleife nicht finden.Python PDB wird nicht aufhören
ich getan habe:
import pdb
pdb.run ('main()')
Also, wenn das Programm in die Endlosschleife, ich traf Kontrolle-C und ...... es nichts tut. Wenn ich pdb nicht benutze, funktioniert control-C auch nicht.
Ich überschreie die Signale nicht. Selbst wenn ich das tue, macht control-C nichts.
Ich lief dies in lldb
, um zu sehen, ob das Problem irgendwo in C++ - Land war, und es ist nicht - es ist definitiv eingefroren Ausführen von Python Mist (auf Thread # 7, wenn das wichtig ist).
Wie bekomme ich pdb
, um tatsächlich auf Control-c zu brechen?
AFAIK, Ctrl-C sollte einen Interrupt im Haupt-Thread auslösen und wirkt sich nicht auf Thread # 7 aus, außer das gesamte Programm stoppt. Ich nehme an, der Haupt-Thread hat einen 'try ... except:' irgendwo (das ist ein nackter, außer dass keine Ausnahmeklasse angegeben ist), der den 'KeyboardInterrupt' abfängt. –
Dies ist auch ein Multithread-Programm. Sind Sie sicher, dass es keinen Stillstand gegeben hat? –
Thread 7 lief frei und Thread 1 wartete darauf, dass er eine Zustandsvariable beendete, weshalb control-C nicht funktionierte. Und ja: Es war kein Deadlock (es wurde 100% CPU verwendet). Mein erster Gedanke war "Oh, gut, eine Schleife - keine Sackgasse!" Dann konnte ich es nicht debuggen ... – iAdjunct