Jak mogę pominąć pętlę za pomocą pdb.set_trace()
?
Na przykład,
pdb.set_trace()
for i in range(5):
print(i)
print('Done!')
pdb
monity przed pętlą. Wpisuję polecenie. Zwracane są wszystkie wartości od 1 do 5, a następnie chciałbym otrzymać monit pdb
ponownie przed print('Done!')
wykonaniem.
n
, a następnie wpiszuntil
. Będzie to trwało, dopóki przynajmniej ta bieżąca linia nie zostanie przekroczona.f
używanej przez R,debug
która „kończy wykonywanie bieżącej pętli lub funkcji” ( adv-r.hadley.nz/debugging.html )?until
(lub jego krótkiej formyunt
) bez argumentów zawsze przejdzie w dół o linię (chyba że trafisz na instrukcję return), więc możesz po prostu użyć go kilka razy zamiastn
.breakpoint()
ustawieniem w pętlipython 3
.VB Editor
Może zaakceptować punkty przerwania „w locie”, ale to najprawdopodobniej nie w przypadkupdb
.Powinieneś ustawić punkt przerwania po pętli ("break main.py:4" zakładając, że powyższe linie znajdują się w pliku o nazwie main.py), a następnie kontynuować ("c").
źródło
W linku wymienionym w zaakceptowanej odpowiedzi ( https://pymotw.com/3/pdb/ ) uważam, że ta sekcja jest nieco bardziej pomocna:
Oto przykład, jak to działa re: loops:
Oszczędza ci to dwóch rzeczy: konieczności tworzenia dodatkowych punktów przerwania i konieczności przechodzenia do końca pętli (zwłaszcza gdy mógłbyś już wykonać iterację w taki sposób, że nie byłbyś w stanie tego zrobić bez ponownego uruchomienia debugera).
Oto dokumentacja Pythona
until
. Btw używampdb++
jako drop-in dla standardowego debuggera (stąd formatowanie), aleuntil
działa tak samo w obu.źródło
Możesz ustawić inny punkt przerwania po pętli i przeskoczyć do niego (podczas debugowania) za pomocą
c
:źródło
Jeśli dobrze to zrozumiałem.
Jednym z możliwych sposobów byłoby:
Gdy pojawi się
pdb
monit. Po prostu naciśnijn
(następny) 10 razy, aby wyjść z pętli.Jednak nie znam sposobu na wyjście z pętli
pdb
.Możesz jednak użyć
r
do wyjścia z funkcji.źródło