Błędy w programach
Błędy
w programach (cz. 1)
Każdy programista
(szczególnie początkujący) wie co to są błędy. Występują
one nawet w najbardziej prostych programach. A to pomyli się nam
literka, a to opuścimy jakiś znaczek. W czasie pisania kodu
większość z tych błędów jest niezauważalna. Aż tu naglę
po uruchomieniu programu pojawia
się okno z informacją typu "Run-time error '9':
Subscript out of range". Doświadczony programista wie co z
tym zrobić, ale początkującemu opadnie szczęka i wyda
dźwięk "Łaaaaaaa..." i nie wie co począć. Czy
kopnąć komputer, czy skończyć z programowaniem albo nie wiadomo co jeszcze (sam
przeżywałem takie rozterki, w końcu każdy z nas uczył się
programowania od błędów ;)) Dla tych co wiedzą i dla tych co
niewiedzą piszę ten art.
Rozważania o błędach należy
rozpocząć od ich podziału. Tak więc błędy dzielimy
na:
Błędy składni-
występują one zawsze, gdy nieprawidłowo napiszemy
jakąś funkcję lub popełnimy błąd typu zapomnienie
przecinka, dwukropku, nawiasu. Błędy te objawiają się
w czasie pisania kodu i są natychmiastowo wyłapywane,
gdy naciśniemy [ENTER] aby przejść do pisania
następnej linii kodu. Objawiają się one poprzez
zmianę koloru czcionki linii kodu z błędem na czerwony, czyli mniej więcej tak:
Open
"Plik.txt" For AppendW tym przypadku zapomniano
podać numeru pliku.
Błędy logiczne-występują
w momencie działania programu, i są trudniejsze do
odnalezienia. Mogą one być spowodowane np. odczytem z
pliku w miejscu jego końca itp. Pojawia się wtedy
okienko Run time error: <numer błędu>. Zwykle
tego typu błędy są trudne do usunięcia, ale VB
posiada narzędzia do
zapobiegania, wykrywania i usuwania błędów.
Podstawowymi błędami
popełnianymi przez programistów jest nie deklarowanie zmiennych, lub ich niepełna
deklaracja. Mam tu na myśli deklaracje typu "Dim zmienna" i koniec, a tak
zadeklarowana zmienna jest po
pierwsze typu Variant, przez co zabiera pamięć a po drugi
bardzo nieefektowna. Szczególnie jest to ważne, gdy piszemy kod
programu na "eksport", czyli do pokazania go innym
programistom. Wtedy taki programista nie wie co autor ma zamiar
przechowywać w takiej
zmiennej. Wprawdzie to nie jest tak poważny błąd bo z takimi
zmiennymi program działa normalnie, ale wspomniałem o tym,
ponieważ oglądając różne kody strasznie mnie to
denerwowało. Wracając do tematu nie deklarowanie zmiennych jest
złe, ponieważ VB uzna nową
nie zadeklarowaną zmienną
za Variant, a tego da się uniknąć. Wystarczy w tym celu na
początku pisania kodu programu dodać do sekcji Declarations
każdej formy lub modułu kod "Option Explicit" lub gdy używamy tablic zmiennych "Option Base". Zapobiegnie to używaniu nie zadeklarowanych zmiennych. Skoro mowa o
tablicach zmiennych VB numeruje tablice od 0 tj. Jeżeli chcemy
zadeklarować tablicę zawierającą 20 elementów musimy
napisać "Dim
samochody(19) As String". Będziemy wtedy mieli 20 elementów, ale
taka numeracja jest niewygodna dla nas, ponieważ mamy wtedy na
myśli 19, a nie 20 elementów. Ale na szczęście da się VB
zmusić do numeracji tablicy kontrolek od 1. Wtedy kod ten
wyglądał by następująco
"Dim samochody(20) As String"
Efekt taki osiągniemy przez
wpisanie w deklaracji formy lub modułu linii "Option Base 1". Wtedy VB zacznie numerować
elementy tablicy od 1 do 20.
Przeanalizowaliśmy główne
błędy związane ze zmiennymi. Teraz zajmiemy się narzędziami
służącymi do walki z innymi błędami. Głównym centrum
debugowania w VB jest pasek narzędzi lub menu Debug. Jeżeli
nie widzimy tego paska narzędzi w VB wyświetlmy go poprzez View|Toolbars a następnie sprawdzamy czy zaznaczona
jest pozycja Debug. W menu
Debug mamy kilka pozycji zajmiemy się teraz ich
omawianiem.
Step Into [F8]
Powoduje rozpoczęcie wykonywania
programu od początku po jednej linii. Po wykonaniu linii kodu
program zostaje zatrzymany (Break Mode).
Po ponownym wywołaniu polecenia lub naciśnięciu F8 wykonywana
jest następna linia kodu i znów zatrzymania. Pozwala to
śledzić w jakiej kolejności i co wykonuje program.
Step Over [Shift + F8]
To polecenia działa prawie tak
samo jak poprzednie, ale nie wykonuje wywołania jakiejś
procedury. To znaczy że np. mamy linię "Call Kodowanie"
to poprzez polecenie Step
Over wywołana procedura
zostanie wykonana w całości, a nie linia po linii, a następnie
program przejdzie do następnej linii kodu i zatrzyma program.
Step Out [Ctrl+Shift+F8]
Działa tylko po wywołaniu
któregoś z powyższych poleceń. Funkcja ta wykonuje całą
procedurę (w której zostało zatrzymane wykonywanie programu)
aż do końca. Następnie program przechodzi do następnej
procedury wywołanej w działaniu programu.
Run To Cursor [Ctrl+F8]
Po zaznaczeniu wiersza kodu klikamy na polecenie Run To Cursor. Wtedy program zostanie wykonany w całości
aż do linii zaznaczonej.
Add Watch
Komenda ta powoduje wyświetlenie
okienka dialogowego Add
Watch. Okno to można
wykorzystać do monitorowania jakichś zmiennych lub
właściwości. Dzięki niemu można także zatrzymać
wykonywanie programu jeśli jakieś wyrażenie staje się
prawdziwe. Dodanie wyrażenia watch odbywa się poprzez
wywołanie polecenia Add
Watches. W polu tekstowym Expression
wpisujemy nazwę zmiennej lub właściwości. Po tym wybieramy
jedną z pozycji na liście Watch Type.
Pierwsza z pozycji spowoduje wyświetlenie właściwości lub
zmiennej wraz z wartością, typem i kontekstem w oknie Watches. Druga pozycja spowoduje także dodanie
zmiennej lub właściwości do okna Watches,
ale teraz możemy uruchomić program, który zostanie zatrzymany,
gdy wartość zmiennej lub właściwości ulegnie zmianie. W polu
tekstowym Expression można także wprowadzić dowolne
wyrażenie VB, a jego wartość zostanie wyświetlona w oknie
watches. Można na przykład wprowadzić taki kod (intYearRate / 12) * 1.1 > .05 Jeśli teraz wybierzemy opcję Break WhenValueIs True to program zostanie zatrzymany, gdy
wyrażenie to będzie prawdziwe.
Edit Watch
Wyświetla okienko dialogowe Edit Watch, w którym można edytować lub kasować
wyrażenia watch. Można go używać tylko wtedy gdy jest
ustawione jakieś wyrażenie watch.
Quick Watch
Po zaznaczeniu w czasie
zatrzymania programu jakiejś zmiennej w kodzie i wywołaniu tego
polecenia pojawia się okienko informujące nas o wartości
zmiennej.
Toggle Breakpoint[F9]
Zaznacza lub usuwa punkt
przerwania wykonywania programu. Punkt przerwania wykonywania
programu to punkt, w którym gdy dana linia jest wykonywana
następuje zatrzymanie programu (Break Mode).
Punkt przerwania zaznaczony jest za pomocą podświetlenia linii
kodu przerwania na brązowo oraz poprzez pojawienie się
brązowej kropki na pasku po lewej stronie. Punktem przerwania
nie może być linia niewykonywalna np. komentarz, linia z
deklaracją zmiennej lub funkcji API, pusta linia itp.
Clear All Breakpionts[Ctrl+Shift+F9]
Czyści wszystkie punkty
przerwania w projekcie.
Set Next Statement[Ctrl+F9]
Po dojściu do punktu przerwania
aplikacja jest zatrzymywana, aktualnie wykonywana linia kodu
podświetlona na żółto. Za pomocą tego polecenie można
ustawić która linia w danej procedurze ma być wykonywana.
Wyboru linii dokonujemy poprzez ustawienie kursora tekstowego w
żądanej linii i wybranie polecenia Set Next Statement. Można też przeciągnąć strzałkę
znajdującą się po lewej stronie na dowolną linię kodu TYLKO
W DANEJ PROCEDURZE!
Show Next Statement
Podświetla następną
instrukcję, która będzie wykonywana. Polecenia tego można
używać do umieszczenia kursora na linii, która będzie
wykonywana następna.
Oprócz wymienionych wyżej
poleceń Visual Basic ma jeszcze kilka narzędzi do debugowania programu.
Pierwszym z nich jest okno Immediate. Umożliwia ono wprowadzenie kodu VB do
natychmiastowego wykonania w czasie zatrzymania programu. Można
je też wykorzystywać do wyświetlania wartości właściwości
lub zmiennej np. przedstawiona poniżej linia kodu wyświetli
wartość właściwości Width.
print
Form1.Width
Okno to można także
wykorzystać do wykonania każdej poprawnej linii kodu. Można
także za pośrednictwem okna Immediate przypisać w czasie
zatrzymania programu dowolną wartość jakiejś zmiennej.
Drugim oknem pomocniczym jest okno Locals. Dzięki niemu w czasie zatrzymania
wykonywania programu na jakiejś procedurze można wyświetlić
wartości wszystkich zmiennych i właściwości oraz ich typy w
obrębie danej procedury.
Kolejnym oknem pomocnym w Debugowaniu jest okno Call Stack, które pokazuje wszystkie aktualnie
wywołane procedury. Listę otwiera aktywna procedura, po niej
jest procedura, która wywołała aktywną procedurę, po niej
następuje procedura, która wywołała wcześniejszą procedurę itd. Dzięki temu
można zobaczyć w jaki sposób została wywołana aktywna
procedura.
Fredie
Wyszukiwarka
Podobne podstrony:
ART2 (10)ART2 (8)ART2 (15)ART2 (12)ART2 (18)art2ART2 (3)ART2 (14)art2 (16)ART2 (13)art2art2więcej podobnych podstron