Wie kann ich eine Schleife mit überspringen pdb.set_trace()
?
Beispielsweise,
pdb.set_trace()
for i in range(5):
print(i)
print('Done!')
pdb
Eingabeaufforderungen vor der Schleife. Ich gebe einen Befehl ein. Alle 1-5 Werte werden zurückgegeben und ich möchte pdb
vor der print('Done!')
Ausführung erneut dazu aufgefordert werden .
n
und geben Sie einuntil
. Dies wird so lange dauern, bis mindestens diese aktuelle Leitung überschritten wird.f
der von Rsdebug
Funktion, die "die Ausführung der aktuellen Schleife oder Funktion beendet" ( adv-r.hadley.nz/debugging.html )?until
(oder seine Kurzformunt
) ohne Argumente verwenden, wird immer eine Zeile nach unten geschrieben (es sei denn, Sie drücken eine return-Anweisung), sodass Sie sie auch nur ein paar Mal anstelle von verwenden könnenn
.Sie sollten nach der Schleife einen Haltepunkt setzen ("break main.py:4", vorausgesetzt, die obigen Zeilen befinden sich in einer Datei namens main.py) und dann fortfahren ("c").
quelle
In dem durch die akzeptierte Antwort erwähnten Link ( https://pymotw.com/3/pdb/ ) fand ich diesen Abschnitt etwas hilfreicher:
Hier ist ein Beispiel, wie das funktionieren kann re: loops:
Es erspart Ihnen zwei Dinge: Sie müssen zusätzliche Haltepunkte erstellen und zum Ende einer Schleife navigieren (insbesondere, wenn Sie möglicherweise bereits iteriert haben, sodass Sie dies nicht können, ohne den Debugger erneut auszuführen).
Hier sind die Python-Dokumente
until
. Übrigens verwende ichpdb++
als Drop-In für den Standard-Debugger (daher die Formatierung),until
funktioniert aber in beiden Fällen gleich.quelle
Sie können nach der Schleife einen weiteren Haltepunkt setzen und (beim Debuggen) zu diesem springen
c
:quelle
Wenn ich das richtig verstanden habe.
Ein möglicher Weg, dies zu tun, wäre:
Sobald Sie erhalten, erhalten Sie
pdb
prompt. Drücken Sie einfachn
(nächste) 10 Mal, um die Schleife zu verlassen.Mir ist jedoch keine Möglichkeit bekannt, eine Schleife zu verlassen
pdb
.Sie können jedoch
r
eine Funktion beenden.quelle