Ich benutze das pdb-Modul, um ein Programm zu debuggen. Ich möchte verstehen, wie ich pdb beenden und zulassen kann, dass das Programm bis zum Abschluss fortgesetzt wird. Die Ausführung des Programms ist rechenintensiv, daher möchte ich es nicht beenden, ohne dass das Skript versucht, es zu vervollständigen. continue
scheint nicht zu funktionieren. Wie kann ich pdb beenden und mit meinem Programm fortfahren?
111
continue
beendet Schleifen, beendetreturn
Methoden / Funktionencontinue
den Befehl pdb. Nicht die Python-Anweisung.continue
sollte laut Dokumentation "Ausführung fortsetzen, nur stoppen, wenn ein Haltepunkt gefunden wird". Haben Sie einen Haltepunkt gesetzt, der getroffen wird?pdb.set_trace()
in Ihrem Quellcode?Antworten:
continue
sollte "Ausführung fortsetzen, nur anhalten, wenn ein Haltepunkt gefunden wird", damit irgendwo ein Haltepunkt festgelegt ist. So entfernen Sie den Haltepunkt (wenn Sie ihn manuell eingefügt haben):Oder wenn Sie verwenden
pdb.set_trace()
, können Sie dies versuchen (obwohl, wenn Sie pdb auf ausgefallenere Weise verwenden, dies Dinge kaputt machen kann ...)quelle
set_trace = lambda: None
:)set_trace = lambda: None
. Python org sollte einen Befehl hinzufügen, mit dem Sie pdb verlassen können.Ein einfaches Ctrl- Dwird aus pdb ausbrechen. Wenn Sie fortfahren möchten, anstatt zu brechen, drücken Sie einfach cund nicht den gesamten
continue
Befehlquelle
exit
Die Antwort von @voithos ist richtig, daher füge ich nur eine Alternative hinzu, falls Sie sie verwenden
set_trace
. Ja, derpdb.set_trace = lambda: None
Hack funktioniert einwandfrei, aber nicht, wenn Sie andere Haltepunkte festgelegt haben und diese später wieder aktivieren möchten. Für mich weist dies auf die Tatsache hin, dass leiderpdb
eine Reihe von Funktionen fehlen (sogar grundlegende Dinge wie Anzeigelisten), und dies ist ein weiterer Fall.Die gute Nachricht ist, dass dies
pdb++
ein großartiger Ersatz für Drop-In istpdb
, und eines der Dinge, die es löst, ist genau das Problem der Deaktivierungset_trace
. Sie können also einfach Folgendes tun:und geben Sie an der
(Pdb++)
Eingabeaufforderung Folgendes ein:Wenn Sie später wieder aktivieren möchten, funktioniert dies nicht überraschend:
Einfach! Darüber hinaus erhalten Sie viele weitere nützliche Extras.
quelle
Wenn Sie den Debugger wirklich beenden möchten, müssen Sie etwas wie WinPdb ausführen , mit dem Sie sich vom Prozess trennen und dann den Debugger beenden können (Hinweis: Es ist plattformübergreifend).
Wenn Sie das Debuggen fortsetzen möchten, aber nicht mehr an einem bestimmten Haltepunkt anhalten möchten, müssen Sie:
cl bp_number
oderclear file:line
um den Haltepunkt dauerhaft zu entfernen oderdisable pb_number
um ihn auszuschalten, aber in der Lage zu sein, ihn zurückzuschalten.continue
und Ihr Programm läuft bis dahin der nächste andere Haltepunkt wird getroffen.Weitere Einzelheiten hierzu finden Sie im Handbuch .
quelle
Finden Sie einen neuen Weg, um die PDF-Datei zu beenden, ohne etwas zu installieren: - Wenn das Programm gestartet wird, drücken Sie Strg + C und wechseln Sie dann in ein anderes Fenster (ein beliebiges Fenster). Die ursprüngliche Shell mit laufender PDF-Datei sollte Folgendes anzeigen: (PDF) ..... - Wechseln Sie zurück zu pdb und drücken Sie die Eingabetaste. Jetzt sind Sie fertig. Die pdb-Befehlsshell wird wieder angezeigt
quelle