Błędy
Typy błędów programu
W programie utworzonym w Visual Basic mogą zdarzyć się trzy typy błędów: błędy kompilacji (składni), błędy podczas działania programu i błędy logiczne.
Błądy kompilacji to pomyłka programisty, która łamie zasady składni Visual Basic (błędne napisanie własności lub słowa kluczowego). Visual Basic zwraca uwagę na kilka typów składni w programach. Visual Basic nie pozwoli na uruchomienie programu, dopóki nie zostaną poprawione wszystkie błędy składni.
Jeżeli opcja Auto Syntax Check (na stronie Editor okienka dialogowego Options) jest zaznaczona, błędy składniowe są wykrywane podczas wpisywania. W przeciwnym wypadku są wykrywane, podczas kompilacji projektu.
Przykłady instrukcji, które mogą spowodować błędy kompilacji:
Prnt "Hello!" Niepoprawne słowo kluczowe (Prnt zamiast Print).
Print ?Hello!" Niepoprawna interpunkcja (? zamiast ").
If X=1 doSomething Niepoprawna struktura (przed doSomething powinno wystąpić Then).
Błąd podczas działania programu to błąd, który powoduje nieoczekiwane zatrzymanie działania programu. Takie błędy powstają, gdy zewnętrzne zdarzenie lub nie wykryty błąd składni zmusza program do zatrzymania swojego działania. Pomyłka w pisowni nazwy pliku w funkcji LoadPicture lub stacja dyskietek nie zawierająca dyskietki są przyczynami, które mogą powodować błędy podczas działania programu.
Kiedy pojawi się błąd podczas wykonania programu, zatrzymane jest wykonywanie programu, chyba że procedura, w której pojawił się błąd, będzie zawierała poprawny kod obsługi błędu.
Błąd logiczny to błąd człowieka - pomyłka programisty, która powoduje, że kod programu generuje złe wyniki. Większość wysiłków przy usuwaniu błędów koncentruje się na znajdywaniu błędów logicznych wprowadzonych przez programistę. Błędy te są często trudniejsze do zlokalizowania i poprawienia.
Sposoby wykrywania błędów
Visual Basic zapewnia szeroki asortyment narzędzi do wykrywania błędów i cech, które pomagają zlokalizować i poprawić błędy w kodzie:
Sprawdzanie błędów składni
Sprawdzanie błędów składni kontroluje kod pod względem błędów składniowych podczas wpisywania, uruchamiania i kompilowania projektu. Jeżeli pojawi się błąd, zostanie podświetlone potencjalne źródło błędu i wyświetlony komunikat opisujący błąd.
Aby włączyć sprawdzanie błędów składniowych należy: wybrać menu Tools, Options, otworzyć stronę Editor okienka dialogowego Options i zaznaczyć opcję Auto Syntax Check.
Tryb przerwania/edycji i kontynuacji
Tryb przerwania zatrzymuje uruchomioną aplikację, ale pozostawia jej bieżące zmienne i ustawienia właściwości. Jest jakby zaprezentowaniem stanu programu w określonej chwili podczas jego działania. W trybie przerwania można zbadać i zmienić bieżące wartości i właściwości, wprowadzić znaczne modyfikacje kodu i określić, jakie instrukcje aplikacji będą uruchomione jako następne. Po zakończeniu edycji, można kontynuować uruchomienie programu. Ta bardzo przydatna cecha jest nazywana edytuj i kontynuuj.
Aby wejść w tryb przerwania należy:
Po uruchomieniu programu wybrać z menu Run, Break (nacisnąć Ctrl+Break lub kliknąć przycisk Break na pasku narzędziowym).
Aby zbadać i zmienić kod, należy wyświetlić odpowiednie okno Code i zmienić go w miarę potrzeby.
Aby kontynuować działanie programu, należy nacisnąć F5 lub wybrać z menu Run, Start lub kliknąć przycisk Start na pasku narzędziowym.
Wyrażenia Watch
Wyrażenia Watch umożliwiają monitorowanie wartości określonych zmiennych, właściwości i wyrażeń w czasie działania programu. Wyrażenia Watch są wyświetlone w obszarze Watch okna Debug w trybie przerwania (poza wyrażeniami Watch, które pojawiają się w ich własnym okienku dialogowym). Można przerwać wykonanie programu, kiedy wyrażenie Watch ulega zmianie lub ma wartość True.
Aby dodać wyrażenie Watch do programu należy:
W czasie projektowania lub podczas trybu przerwania wybrać z menu Debug, Add Watch, aby otworzyć okienko dialogowe Add Watch.
W okienku tekstowym Expression należy wpisać zmienną, właściwość lub wyrażenie, które ma być obserwowane.
W Context należy wybrać moduł(y) i procedurę(y), w których ma być obserwowana zmienna, właściwość lub wyrażenie. Zawężenie zakresu obserwacji umożliwia przyśpieszenie działania wykrywacza błędów.
W Watch Type należy wybrać Watch Expression (aby tylko obserwować), Break When Value Is True (aby przerwać działanie programu, kiedy wartość wyrażenia Watch ma wartość True) lub Break When Value Changes (aby zatrzymać, kiedy wartość wyrażenia ulega zmianie).
Aby przeprowadzić stałą obserwację - to znaczy, aby oglądać bieżącą wartość zmiennej, właściwości lub wyrażenia należy:
Po wejściu w tryb przerwania, wybrać właściwą zmienną, właściwość lub wyrażenie w odpowiednim oknie Code lub na obszarze Code okna Debug,
Wybrać z menu Debug, Quick Watch lub nacisnąć Shift-+F9 albo kliknąć przycisk Quick Watch na pasku narzędziowym.
Punkt przerwania
Punkt przerwania określa konkretny wiersz kodu, gdzie Visual Basic zatrzyma działanie programu i wejdzie w tryb przerwania. Umożliwia to zbadanie stanu programu (wartości zmiennych, wydruku ekranu i tak dalej) w specyficznym miejscu działania programu.
Aby ustawić lub usunąć punkt przerwania dla wiersza kodu należy:
W czasie projektowania lub podczas trybu przerwania umieścić wskaźnik (kursor) w wierszu i wybrać z menu Debug, Toggle Breakpoint lub nacisnąć F9, albo kliknąć przycisk Toggle Breakpoint na pasku narzędziowym.
Wykonywanie krokowe
Wykonywanie krokowe umożliwia "przechodzenie przez" wykonywanie pojedynczej jednostki kodu - jednej instrukcji, jednej procedury, jednego modułu itd. Po wykonaniu określonej jednostki kodu Visual Basic automatycznie wchodzi w tryb przerwania, umożliwiając obserwowanie wyników. Może to ułatwić znalezienie części kodu, w której pojawił się błąd.
Step Into
Polecenie Step Into przechodzi do następnej instrukcji w programie. Jeżeli ta instrukcja jest wywołana z innej procedury, Step Into przechodzi do pierwszej instrukcji z tej procedury. Należy używać Step Into w celu znajdowania błędów programu na "mikroskopijnym" poziomie przez przechodzenie przez wszystkie jego instrukcje jedna po drugiej.
Aby użyć polecenia Step Into należy:
W trybie przerwania wybrać z menu Debug, Step Into lub wcisnąć F8, lub kliknąć przycisk Step Into na pasku narzędziowym.
Step Over
Polecenie Step Over przechodzi do następnej instrukcji w procedurze. Jeżeli ta instrukcja jest wywołaniem następnej procedury, Step Over przechodzi "nad" tą procedurą i zatrzymuje się na następnej instrukcji bieżącej procedury. Można go używać do znajdowania błędów w programie na nieco wyższym poziomie niż Step Into, przez przechodzenie przez kolejne procedury jako całość.
Aby użyć polecenia Step Over należy:
W trybie przerwania wybrać z menu Debug, Step Over lub nacisnąć Shift+F8, lub kliknąć przycisk Step Over na pasku narzędziowym.
Run To Cursor
Polecenie Run To Cursor przechodzi do określonej instrukcji w dalszej części kodu. Należy do używać do szybkiego przechodzenia do właściwych instrukcji w programie.
Aby użyć polecenia Run To Cursor należy:
W trybie przerwania wyświetlić instrukcję kodu, do której program ma przejść i kliknąć ją, aby tam umieścić kursor. Następnie wybrać z menu Debug, Run To Cursor lub nacisnąć Ctrl+F8.
Wywołania
Wywołania umożliwiają oglądanie - w trybie przerwania - spisu aktualnie aktywnych wywołań procedur programów. Kiedy wykonywany jest kod procedury, procedura jest dodawana do listy aktywnych procedur. Jeżeli procedura wywołuje inną procedurę Sub lub Function, wywołana procedura jest również dodawana do listy itd. dla wszystkich aktywnych procedur. Ta cecha może pomóc śledzić przebieg programu i wybrać możliwe lokalizacje błędów logicznych.
Aby obejrzeć aktualnie aktywne odwołania do procedur należy w oknie Call Stack:
W trybie przerwania wybrać z menu View, Call Stack lub nacisnąć Crl+L.