[file] debugging_python.pdf [end_user_slide] 4 [notes] ### 1 ### 3 · Na początek przybliżę sposoby wykrycia błędów w programach pythonowych · Poruszę kwestię dostępnego oprogramowania do odpluskwiania · I w ostatniej części zaprezentuję przykładową sesję z debuggerem pdb ### 4 ### 5 · W przypadku gdy program zakończy się niepowodzeniem, jest spora szansa że wystąpi wyjątek - TypeError, IndexError, czy AttributeError wynikiem tego jest traceback. Dzięki czemu jesteśmy w stanie stosunkowo prosto namierzyć miejsce w kodzie w którym nastąpił wyjątek. · Wykorzystanie instrukcji print jest jednym z najprostszych sposobów na pokazanie wartości zmiennych w działającym (nieprawidłowo) programie, w przypadku gdy wykonanie programu nie kończy się rzuceniem wyjątku. Technika wypisywania na ekran informacji o stanie programu jest jedną z powszechniej stosowanych technik niezależnie od języka programowania. · moduł logging który dostarcza funkcjonalność logowania jest rozwinięciem powyższej metody - oprócz możliwości wypisywania informacji na ekran (konsolę) pozwala zdefiniować inne sposoby przesłania informacji o zdarzeniu - od wspomnianego wcześniej wypisywania na konsolę, po zapis do pliku lub wysłaniu do sysloga, a nawet do pokuszenia się o napisanie własnej obsługi · moduł trace pozwala na sprawdzenie w jaki sposób przebiegło wykonanie naszego programu co pomoże w ustaleniu w którym miejscu coś poszło nie tak · no i debugger - czyli program pozwalający na krokowe wykonanie programu, podglądu wartości zmiennych w danej chwili, zatrzymywaniem się we wskazywanych przez użytkownika miejscach, introspekcji (czasami) ### 7 Debuggery można podzielić na kilka sposobów. Pierwszą grupą są odpluskwiacze działające w konsoli Drugą debuggery graficzne Oraz trzecią - debuggery zintegrowane w środowiska programistyczne Warto zaznaczyć, że we wszystkich grupach istnieją debuggery pozwalające na debugowanie zdalne. ### 8 tekstowe debuggery stanowią dość liczną grupę - poczynając od pdb, który znajduje się w bibliotece standardowej pythona, poprzez całą masę innych nakładek na pdb, dodających rzeczy, w których pdb brakuje - kolorowanie kodu, tab completion podczas introspekcji obiektów, ładnego wyświetlania struktur, szczegółowe informacje o obiekcie, kontekstowy podgląd wykonywanego programu itd. Pudb jest przykładem programu TUI (text user interface) czyli pełnoekranową aplikacją uruchamianą w terminalu. ### 9 Graficznych, niezależnych debuggerów nie ma zbyt wiele (przynajmniej nic mi nie wiadomo o innych :) Winpdb jest debuggerem wielo-platformowym napisanym z użyciem wxPythona. Niestety nie pozwala na introspekcję Z kolei debugger z pakietu pywin jest dostępny tylko dla użytkowników windows. Oba programy pozwalają na zdalne podłączenie się do procesu programu. ### 10 Ostanią grupę stanowią odpluskiwacze wbudowane w środowiska programistyczne. Większość z nich ma zbliżone możliwości do winpdb + niektóre z nich pozwalają na introspekcję obiektów w konsoli zintegrowanej z IDE I to w zasadzie tyle jeśli chodzi o narzędzia. ### 12 Przygotowałem program, który będziemy debugować, który pozwoli rozwiązać problem konwersji długości mierzonego w calach na centymetr i odwrotnie dla przysłowiowego kowalskiego. Jest tylko jeden drobny problem - program nie działa :( ### 13 Program jest niezwykle prosty (opis po angielsku styka) ### 14 Zobaczmy kod i jak można go zdebugować przy pomocy pdb, by kowalski mógł go używać