Python: Debugger w Jupyter Notebook – postać znakowa

17-Gru-2019

Programista bez debuggera, to jak mechanik bez klucza… to trzeba mieć!

Ostatnio bardzo popularnym narzędziem do tworzenia skryptów w Pythonie jest Jupyter Notebook. Niestety domyślnie menu nie ma polecenia debug… o ile w pojedynczych komórkach po prostu wykonujesz mało skomplikowane polecenia, to ewentualne dodanie polecenia print powinno pomóc i rozwiązać problem. Co jednak zrobić jeżeli masz nieco bardziej złożoną pętlę i coś w niej nie działa?

W charakterze kłopotliwego kodu wystąpi u nas taka pętla:

W sumie – nic skomplikowanego, ale zmienna sterująca i jest raz zwiększana, raz zmiejszana… idzie się pogubić, zwłaszcza po drinku.

W celu debuggowania w trybie „znakowym” wykonaj takie czynności:

  • załaduj moduł pdb:

  • a następnie w miejscu, gdzie chcesz aby zatrzymał się program dodaj linijkę:

Czyli nasza kłopotliwa pętelka może teraz wyglądać tak:

Po uruchomieniu w/w kodu, kiedy wykonanie dotrze do linijki

program zatrzyma się prezentując proste pole do wprowadzenia instrukcji:

jeśli wpiszesz „i” i naciśniesz enter, to debugger wyświetli w odpowiedzi aktualną wartość i. W okienku możesz też podawać bardziej skomplikowane wyrażenia, np sprawdzać ile wynosi i % 2 lub czy i %2 == True itp.

Kiedy chcesz aby zostało wykonane kolejne polecenie wystarczy nacisnąć n i enter. A kiedy masz już dosyć przetwarzania linijka po linijce naciśnij c i enter

Można też wpisać help, na co debugger odpowie listą dostępnych poleceń, lub wpisać help <nazwa_komendy> i wtedy zobaczysz opis polecenia:

Nasza sesja debuggowania mogłaby więc koniec końców wyglądać tak:

 

 

Dodaj komentarz:

Autor: Rafał Kraik