[ Pobierz całość w formacie PDF ]
Rozdział 10.
Wykrywanie błędów w aplikacjach
C:\Dokumenty\Roboczy\Delphi 4 dla kazdego\10.doc 441
Rozdzia³ 10 ¨ Wykrywanie błędów w aplikacjach 441
Jedną z ważnych cech zintegrowanego środowiska Delphi jest jego debugger. Narzędzie to umożliwia ustawianie punktów przerwań, podgląd stanu zmiennych, kontrolowanie obiektów, a także przeprowadzanie wielu innych operacji, dzięki którym można (względnie) szybko zorientować się, co dzieje się (lub nie dzieje) z badanym programem. Dobry debugger ma niebagatelne znaczenie dla efektywnego tworzenia aplikacji.
Tak się niestety składa, że sama czynność śledzenia programu i wyszukiwania błędów jest przez wielu programistów traktowana marginalnie. Ja sam, kiedy rozpocząłem programowanie dla Windows, przez długi czas ignorowałem debugger, gdyż byłem pochłonięty nauką samego programowania. Kiedy jednak odkryłem, jak cennym narzędziem jest dobry program wykrywania błędów, poczułem się trochę głupio z powodu unikania go przez tak długi czas. Czytając tę książkę dysponujesz luksusem uczenia się na moich błędach. Z tego rozdziału dowiesz się, jakie możliwości daje debugger.
Debugger wchodzący w skład środowiska IDE udostępnia kilka cech i narzędzi, które pomagają w pracy przy wykrywaniu błędów. W dalszej części omówione zostaną następujące zagadnienia:
u Elementy menu debuggera
u Punkty przerwań
u Nadzorowanie zmiennych przy pomocy listy wyrażeń testowych (Watch List)
u Nadzorowanie obiektów przy pomocy Inspektora Śledzenia (Debug Inspector)
u Inne narzędzia wykrywania błędów
u Praca krokowa
u Techniki wykrywania błędów
Po co stosować debugger?Najprościej mówiąc – po to, aby pomóc sobie przy wykrywaniu błędów w pracy programu. Niemniej jednak proces śledzenia służy nie tylko do odnajdywania i korygowania błędów – jest to również narzędzie wspomagające rozwój oprogramowania. Mimo, iż proces wykrywania błędów ma duże znaczenie, wielu programistów nie poświęca wystarczająco dużo czasu na przyswojenie sobie zasad korzystania z wszystkich cech zintegrowanego debuggera; w efekcie przysparzają oni sobie wielu kosztów i straty czasu, nie mówiąc już o frustracji wynikającej z trudnych do znalezienia błędów.
Generalnie, uruchomienie programu pod kontrolą debuggera rozpoczyna sesję wykrywania błędów; w środowisku z debuggerem zintegrowanym (jak np. Delphi) debugger ten aktywizowany jest już w momencie uruchomienia programu (co, jak wiadomo, następuje w wyniku naciśnięcia klawisza F9, lub wybrania opcji Run|Run menu głównego, bądź też kliknięcia w przycisk Run na pasku narzędzi.)
Elementy menu związanez procesem śledzenia
Przed przystąpieniem do omawiania szczegółów procesu wykrywania błędów przyjrzyjmy się poleceniom menu głównego, związanym z debuggerem. Niektóre z tych poleceń należą do kategorii Run głównego menu, pozostałe znaleźć można w menu kontekstowym Edytora Kodu. Elementy menu kontekstowego Edytora Kodu (specyficzne dla debuggera) zestawione zostały w tabeli 10.1.
Tabela 10.1. Elementy menu kontekstowego Edytora Kodu związane ze śledzeniem programu
Element
Klawisz skrótu
Opis
Toggle Breakpoint
F5
Ustawia lub likwiduje punkt przerwania w bieżącej linii Edytora Kodu.
Run to Curso
F4
Uruchamia program i wykonuje go aż do
osiągnięcia linii kodu (w oknie edytora), w której znajduje się kursor.
Inspect
Alt+F5
Otwiera okno Inspektora Śledzenia
(Debug Inspector) dla obiektu wskazywanego przez kursor.
Goto Address
Ctrl+Alt+G
Umożliwia określenie adresu w programie, od którego wznowiony zostanie proces
wykonania programu.
Evaluate/Modify
Ctrl+F5
Umożliwia podgląd i/lub modyfikację zmiennej w trakcie pracy programu.
Add Watch at Cursor
Ctrl+F7
Dodaje zmienną wskazywaną przez kursor do listy wyrażeń testowych.
View CPU
Ctrl+Alt+C
Wyświetla okno kodu w postaci asemblera.
Menu Run zawiera kilka poleceń odnoszących się do programów pracujących pod kontrolą debuggera. Polecenia te pozwalają, między innymi, uruchomić program pod kontrolą debuggera, przerwać wykonanie programu pracującego pod debuggerem
, a także określić parametry przekazywane do programu z poziomu wiersza poleceń. Niektóre polecenia tego menu są zdublowane w menu kontekstowym Edytora Kodu. Polecenia menu Run, kontrolujące operacje wykrywania błędów, zostały zestawione w tabeli 10.2.
Tabela 10.2. Elementy menu Run, kontrolujące operacje wykrywania błędów
Element
Skrót
Opis
Run
F9
Kompiluje program (jeżeli zachodzi taka potrzeba) i uruchamia go pod kontrolą
wbudowanego debuggera. Operacja równoważna kliknięciu na przycisku Run.
Parameters
(brak)
Umożliwia wpisanie parametrów wiersza poleceń dla aplikacji i przypisania aplikacji nadrzędnej podczas śledzenia biblioteki DLL.
Step Over
F8
Wykonuje linię kodu źródłowego, wskazywaną przez punkt wykonania, po czym zatrzymuje się w następnej linii kodu.
Trace Into
F7
Wchodzi do wnętrza procedury/funkcji napotkanej w punkcie wykonania.
Trace to Next Source Line
Shift+F7
Powoduje przejście punktu wykonania do następnej linii w kodzie źródłowym programu.
Run to Cursor
F4
Uruchamia program i wykonuje go aż do osiągnięcia linii kodu (w oknie edytora), w której znajduje się kursor.
Show Execution Point
(brak)
Wyświetla punkt wykonania programu w Edytorze Kodu, przewijając kod w oknie jeżeli jest to niezbędne. Działa tylko w stanie zatrzymania programu.
Program Pause
(brak)
Zatrzymuje wykonanie programu, kiedy tylko sterowanie osiągnie kod posiadający swą reprezentację w kodzie źródłowym.
Program Reset
Ctrl+F2
Bezwarunkowo zatrzymuje program i zwraca sterowanie do środowiska IDE Delphi.
Inspect
(brak)
Wyświetla okno dialogowe inspekcji,
umożliwiając wpisanie nazwy obiektu
przeznaczonego do nadzorowania.
Evaluate/Modify
Ctrl+F7
Wyświetla okno dialogowe
podglądu/modyfikacji.
Add Watch
Ctrl+F5
Wyświetla okno właściwości podglądu.
Add Breakpoint
(brak)
Wyświetla podmenu zawierające polecenia dodania punktu przerwania do kodu źródłowego, adresu, danej lub modułu.
W trakcie testowania swojej aplikacji będziesz często korzystał z tych poleceń, powinieneś więc również zaznajomić się z klawiszami skrótu operacji wykrywania błędów. Przyjrzyjmy się teraz punktom przerwania i możliwościom wykorzystania ich w programie.
Punkty przerwańKiedy uruchomisz swój program w zintegrowanym środowisku Delphi, zostanie on wykonany z pełną szybkością, zatrzymując się jedynie w miejscach, w których ustawione zostały punkty przerwań.
Punkt przerwania jest to znacznik nakazujący debuggerowi zatrzymanie procesu wykonania programu w chwili osiągnięcia tego znacznika.
Ustawianie i usuwanie punktów przerwańUstawienie punktu przerwania wymaga kliknięcia myszą na obszarze guttera na wysokości linii, w której chcesz zatrzymać wykonanie programu (gutterem nazywany jest szary pasek należący do lewej krawędzi okna Edytora Kodu). Ustawienie punktu przerwania jest sygnalizowane ikoną (czerwonym kołem) na pasku guttera oraz podświetleniem linii na czerwono. Ponowne kliknięcie na ikonie punktu przerwania spowoduje jego usunięcie. Punkt przerwania może być również ustawiony lub usunięty z poziomu klawiatury (klawisz F5) lub z poziomu menu kontekstowego Edytora Kodu.
Punkt przerwania może być ustawiony jedynie w linii, która posiada swe odzwierciedlenie w skompilowanym kodzie. Do nieprawidłowych operacji należy ustawianie punktów przerwań w liniach pustych, zawierających komentarz lub deklarację. Próby ustawienia punktu przerwania w jednej z takich linii nie są blokowane, ale powodują wystosowanie ostrzeżenia przez debugger. Ustawienie punktu przerwania w jednej z poniższych linii kodu, spowoduje wygenerowanie ostrzeżenia nieprawidłowego punktu przerwania:
{To jest komentarz, po którym następuje pusta linia.}
X : Integer; {Deklaracja}
Punkty przerwań mogą być ustawiane na dyrektywie end kończącej procedurę lub funkcję.
Jeżeli ustawisz punkt przerwania w nieprawidłowej linii, Edytor Kodu wyświetli ją na zielono (zakładając domyślne ustawienia kolorów), a ikona punktu na gutterze będzie zaciemniona.
Program pracujący pod kontrolą debuggera zachowuje się tak, jakby pracował całkowicie samodzielnie – aż do momentu, kiedy osiągnięty zostanie punkt przerwania. Kiedy to nastąpi, sterowanie wraca do środowiska IDE, a linia kodu źródłowego, zawierająca punkt przerwania, zostaje podświetlona. Jeżeli stosujesz domyślny ustawienia kolorów linia, na której zatrzymany został program, jest podświetlona na czerwono, ponieważ ten właśnie kolor wskazuje linię z ustawionym punktem przerwania.
Punkt wyko...
[ Pobierz całość w formacie PDF ]