Używam modułu pdb do debugowania programu. Chciałbym zrozumieć, jak mogę wyjść z pdb i pozwolić programowi na kontynuowanie aż do zakończenia. Uruchomienie programu jest kosztowne obliczeniowo, więc nie chcę wychodzić bez próby zakończenia skryptu. continue
nie wydaje się działać. Jak mogę wyjść z pdb i kontynuować pracę z moim programem?
111
continue
Wychodzi z pętli,return
wychodzi z metod / funkcjicontinue
poleceniu pdb. Nie instrukcja Pythona.continue
powinno "Kontynuować wykonywanie, zatrzymywać tylko po napotkaniu punktu przerwania", zgodnie z dokumentacją. Czy masz ustawiony punkt przerwania, który jest trafiony?pdb.set_trace()
w kodzie źródłowym?Odpowiedzi:
continue
powinno „Kontynuować wykonywanie, zatrzymywać się tylko wtedy, gdy zostanie napotkany punkt przerwania”, więc gdzieś jest ustawiony punkt przerwania. Aby usunąć punkt przerwania (jeśli wstawiłeś go ręcznie):Lub, jeśli używasz
pdb.set_trace()
, możesz spróbować tego (chociaż jeśli używasz pdb w bardziej wyszukany sposób, może to zepsuć sprawę ...)źródło
set_trace = lambda: None
:)set_trace = lambda: None
. Python org powinien dodać polecenie, które po prostu pozwoli ci wyjść z pdb.Prosty Ctrl- Dwyrwie się z pdb. Jeśli chcesz kontynuować, a nie przerywać, po prostu naciśnij, ca nie całe
continue
polecenieźródło
exit
Odpowiedź od @voithos jest poprawna, więc dodam tylko jedną alternatywę w przypadku, gdy używasz
set_trace
. Tak,pdb.set_trace = lambda: None
hack działa poprawnie, ale nie, jeśli masz ustawione inne punkty przerwania i chcesz je później ponownie włączyć. Dla mnie wskazuje to na fakt, że niestetypdb
brakuje wielu funkcji (nawet podstawowych rzeczy, takich jak listy wyświetlania), a to jest inny przypadek.Dobra wiadomość jest taka, że
pdb++
jest to świetny zamiennikpdb
, a jedną z rzeczy, które rozwiązuje, jest właśnie problem wyłączaniaset_trace
. Możesz więc po prostu zrobić:a następnie po
(Pdb++)
monicie wpisz:Jeśli chcesz ponownie włączyć później, nic dziwnego, że działa to:
Łatwo! Oprócz tego otrzymasz wiele innych przydatnych gadżetów.
źródło
Jeśli naprawdę chcesz wyjść z debugera, musisz uruchomić coś takiego jak WinPdb, które pozwala odłączyć się od procesu, a następnie wyjść z debugera (NB jest to wieloplatformowe).
Jeśli chcesz kontynuować debugowanie, ale nie zatrzymywać się już w danym punkcie przerwania, musisz:
cl bp_number
alboclear file:line
, aby trwale usunąć punkt przerwania lubdisable pb_number
, aby włączyć go, ale być w stanie włączyć je z powrotem.continue
i twój program działa do tego momentu trafia następny inny punkt przerwania.Więcej szczegółów na temat powyższego znajduje się w instrukcji .
źródło
znajdź nowy sposób na wyjście z pdb bez instalowania czegokolwiek: - gdy program zacznie działać, naciśnij ctrl + c, a następnie przełącz okno na inne (dowolne okno), wtedy oryginalna powłoka z uruchomionym pdb powinna pokazać coś takiego: (pdb) ..... - przełącz się z powrotem na pdb, a następnie naciśnij Enter, teraz wszystko gotowe, powłoka poleceń pdb pojawia się ponownie
źródło