vbnet.pdf
(
231 KB
)
Pobierz
307351668 UNPDF
Rozdzia³ 8
Usuwanie b³êdów z programów
Czêœæ II
Podstawy programowania
Rozdzia³ 8
Usuwanie b³êdów z programów
W tym rozdziale:
Ró¿ne typy b³êdów, jakie mog¹ wystêpowaæ w programach.
Narzêdzia œrodowiska Visual Studio .NET s³u¿¹ce do debugowania.
Zastawianie pu³apek w postaci punktów przerwañ.
Œledzenie zmiennych za pomoc¹ czujek.
Zmienianie wartoœci zmiennych i wykonywanie poleceñ za pomoc¹
okna komend.
W kilku ostatnich rozdzia³ach mia³eœ mnóstwo okazji, by pope³niaæ
b³êdy w kodzie. Komunikacja miêdzy programist¹ a kompilatorem Vi-
sual Basic musi jednak odbywaæ siê bezb³êdnie – inaczej ni¿ miêdzy
dwoma ludŸmi, kiedy wystêpowanie pojedynczych b³êdów gramatycz-
nych czy niewyraŸnie wypowiedzianych s³ów jest do zaakceptowania.
Komputer wymaga precyzyjnego stosowania regu³ i przestrzegania
przepisów Visual Basica. W tym rozdziale poznasz ró¿ne typy b³êdów,
które zdarzaj¹ siê w programach. Dowiesz siê tak¿e, jak za pomoc¹ na-
rzêdzi do debugowania z pakietu Visual Studio .NET wykrywaæ i popra-
Uwagi dotycz¹ce aktualizacji:
Co nowego w œrodowisku Visual Basic .NET?
Jeœli u¿ywa³eœ ju¿ jêzyka Visual Basic 6, zauwa¿ysz w wersji Visual
Basic .NET pewne nowe mo¿liwoœci, miêdzy innymi:
Visual Basic .NET zawiera kilka nowych narzêdzi do znajdowania
i korygowania b³êdów. Do Visual Studio .NET nale¿y wiele zna-
nych z pakietu Visual Basica 6 poleceñ do debugowania (
Start
,
Bre-
ak
,
End
,
Next
,
Step Into
,
Step Over
), ale jest tu te¿ kilka nowych
narzêdzi i komend do zarz¹dzania procesami i wyj¹tkami oraz na-
rzêdzi obs³uguj¹cych debugowanie aplikacji wielojêzykowych.
Kilka nowych okien do debugowania zosta³o dodanych do inter-
fejsu u¿ytkownika Visual Studio .NET. S¹ to miêdzy innymi:
Au-
tos
(czujki automatyczne),
Command
(komenda),
Call Stack
(stos
wywo³añ),
Threads
(w¹tki),
Memory
(podgl¹d pamiêci),
Disas-
sembly
(dezasemblacja) i
Registers
(rejestry). Nie bêd¹ one na
pewno u¿ywane w ka¿dej sesji debugowania, ale mog¹ okazaæ siê
przydatne w bardziej zaawansowanych aplikacjach.
210 Czêœæ II
Podstawy programowania
wiaæ te b³êdy. Wiedza ta oka¿e siê przydatna, kiedy bêdziesz ekspery-
mentowaæ z ró¿nymi programami z tego podrêcznika oraz pisaæ w³asne
d³u¿sze programy (w przysz³oœci).
Znajdowanie i usuwanie b³êdów
Defekty, które napotka³eœ dotychczas w swoich programach, sprowa-
dza³y siê prawdopodobnie do prostych b³êdów pisowni i sk³adni. Co ro-
biæ, jeœli natrafimy na powa¿niejszy b³¹d w programie – taki, którego nie
mo¿na znaleŸæ i poprawiæ przez proste przejrzenie obiektów, w³aœci-
woœci i instrukcji? Œrodowisko Visual Studio .NET zawiera wiele narzê-
dzi, które pomagaj¹ przy wyszukiwaniu i poprawianiu b³êdów. Narzê-
dzia te nie zapobiegaj¹ powstawaniu b³êdów, ale u³atwiaj¹ ¿ycie w przy-
padku ich wyst¹pienia.
Edytor kodu
oznacza
niepoprawne
instrukcje
niebiesk¹ falist¹
lini¹.
Trzy typy b³êdów
W programie Visual Basic mog¹ wyst¹piæ b³êdy trojakiego rodzaju:
b³êdy sk³adniowe, b³êdy czasu wykonywania i b³êdy logiczne.
B³¹d sk³adniowy
(
b³¹d kompilacji
) jest pomy³k¹ (na przyk³ad niepra-
wid³owo zapisan¹ nazw¹ w³aœciwoœci), która narusza regu³y Visual
Basica. Œrodowisko potrafi wskazaæ kilka typów b³êdów sk³adnio-
wych w programach na etapie pisania kodu i nie pozwala uruchomiæ
programu, zanim b³¹d nie zostanie usuniêty.
B³¹d czasu wykonywania
powoduje nieoczekiwane przerwanie dzia³a-
j¹cego ju¿ programu. B³êdy takie wystêpuj¹, gdy jakieœ zdarzenie ze-
wnêtrzne lub niewykryty b³¹d sk³adniowy zmusi program do za-
trzymania. B³¹d czasu wykonywania pojawi siê na przyk³ad wtedy,
gdy Ÿle wpiszesz nazwê programu w metodzie System.Dra-
wing.Image.FromFile lub spróbujesz odczytaæ dyskietkê ze stacji
niezawieraj¹cej dyskietki.
B³¹d logiczny
to inaczej b³¹d algorytmu – pomy³ka skutkuj¹ca uzyski-
waniem nieprawid³owych b¹dŸ fa³szywych wyników. Wiêkszoœæ
czynnoœci debugowania wi¹¿e siê ze œledzeniem b³êdów logicznych
wprowadzonych przez programistê.
Jeœli napotkasz b³¹d sk³adniowy, czêsto mo¿esz rozwi¹zaæ problem
dziêki systemowi pomocy online, który oferuje informacje dotycz¹ce ko-
munikatów o b³êdach. B³¹d sk³adniowy mo¿na usun¹æ, zwracaj¹c bacz-
n¹ uwagê na prawid³ow¹ sk³adniê funkcji, obiektów, metod i w³aœciwo-
œci. W edytorze kodu b³êdne instrukcje s¹ oznaczone niebiesk¹ falist¹
lini¹. Wiêcej informacji na temat podkreœlenia mo¿na odczytaæ z etykiet-
ki, która pojawia w chwilê po najechaniu na liniê wskaŸnikiem myszy.
Poni¿sza instrukcja pokazuje komunikat o b³êdzie, który pojawia siê
w Visual Studio w przypadku nieprawid³owego wpisania s³owa Case
(
Csae
zamiast
Case
). Wpisz b³êdne s³owo, usuñ z niego kursor, ¿eby poja-
Rozdzia³ 8
Usuwanie b³êdów z programów
211
wi³a siê falista linia, i najedŸ na nie wskaŸnikiem myszy. Zostanie wy-
œwietlony komunikat w etykietce.
B³êdy sk³adniowe s¹ rozpoznawane przez kompilator Visual Basica
ju¿ na etapie wpisywania programu w edytorze kodu.
B³êdy czasu
wykonywania
wymagaj¹
poprawienia
kodu lub
rozbudowanej
obs³ugi b³êdów.
B³¹d czasu wykonywania mo¿na czêsto poprawiæ przez zmianê kodu
programu. Jeœli na przyk³ad do obiektu pola rysunku ³adowana jest nie-
poprawnie mapa bitowa, powodem b³êdu mo¿e byæ po prostu niepo-
prawnie zapisana œcie¿ka. Jest to jednak przyk³ad trywialny. Szkoda, ¿e
nie wszystkie b³êdy czasu wykonywania s¹ tak prozaiczne. Wiele z nich
wymaga g³êbszej ingerencji – strukturalnej obs³ugi wyj¹tków, któr¹ sta-
nowi specjalny blok kodu uruchamiany w przypadku pojawienia siê
b³êdu czasu wykonywania. Blok ten mo¿e „obejœæ” b³êdne miejsce w
programie przez skorygowanie warunków panuj¹cych w programie na
takie, które nie bêd¹ powodowa³y ponownych b³êdów. Nowa sk³adnia
strukturalnej obs³ugi wyj¹tków omówiona jest w rozdziale 9.
Proces
znajdowania
i poprawiania
b³êdów
w programie
nazywa siê
debugowaniem
.
Identyfikowanie b³êdów logicznych
B³êdy logiczne w programach czêsto trudno usun¹æ. S¹ one skutkiem
b³êdnego rozumowania i planowania, a nie nieporozumieniem wyni-
kaj¹cym z literówki. Rozwa¿ nastêpuj¹c¹ instrukcjê If...Then, która bada
dwa wyra¿enia warunkowe i wyœwietla jeden z komunikatów w zale¿-
noœci od wyniku:
If Age > 13 And Age < 20 Then
TextBox2.Text = "You're a teenager"
' jesteœ nastolatkiem
Else
TextBox2.Text = "You're not a teenager"
' nie jesteœ nastolatkiem
End If
212 Czêœæ II
Podstawy programowania
Uwaga
W krajach angielskojêzycznych nastolatek to osoba maj¹ca od
13 do 19 lat w³¹cznie, a to ze wzglêdu na fakt, i¿ koñcówkê „-naœcie”
(-
teen
) maj¹ liczebniki od 13 do 19 (
thirteen
,
fourteen
, ...
nineteen
). Koñców-
ki tej nie maj¹ liczebniki jedenaœcie (
eleven
) i dwanaœcie (
twelve
).
Teenager
to po angielsku nastolatek (
przyp. t³um.
).
Czy widzisz b³¹d? Powy¿sza instrukcja niepoprawnie kwalifikuje osoby
maj¹ce równo 13 lat (dla takiego wieku instrukcja generuje komunikat
„Nie jesteœ nastolatkiem”). Ten typ b³êdu nie wynika ze sk³adni (instruk-
cje s¹ zapisane poprawnie). Przyczyn¹ jego jest niestaranne opracowanie
warunku. Poprawna wersja wygl¹da tak:
If Age >= 13 And Age < 20 Then
Trudno uwierzyæ, ale ten typ b³êdu nale¿y do najczêœciej pope³nianych
w programach Visual Basica. Mamy tutaj kod dzia³aj¹cy poprawnie
w wiêkszoœci przypadków, ale nie we wszystkich. W takiej sytuacji naj-
trudniej trafiæ z diagnoz¹.
Podstawy debugowania, czyli tryb œledzenia
Jednym ze sposobów wyszukiwania b³êdu logicznego jest wykonywa-
nie kodu programu wiersz po wierszu i sprawdzanie zawartoœci zmien-
nych oraz ich zmian w wyniku dzia³ania pojedynczych instrukcji. Po-
zwala na to
tryb œledzenia
, do którego mo¿na przejœæ w trakcie dzia³ania
programu. W trybie tym mo¿liwe jest ogl¹danie kodu w edytorze. To tak
jakby siedzieæ w kokpicie samolotu i obserwowaæ wszystkie poczynania
pilotów, a nawet samemu chwytaæ za stery.
Podczas debugowania aplikacji trzeba u¿ywaæ paska narzêdzi
Debug
(usuwanie b³êdów) – specjalnego paska z przyciskami s³u¿¹cymi wy³¹cz-
nie do œledzenia b³êdów. Pasek ten mo¿na zobaczyæ na poni¿szej ilustra-
cji. Mo¿na go otworzyæ, klikaj¹c polecenie
Debug
z menu
View
(widok).
Break All (przerwij wszystko)
Step Out (wyjdŸ z procedury)
Hexadecimal Display (wyœwietlanie
w systemie szesnastkowym)
Start
Restart (uruchom ponownie)
Stop Debugging (przerwij debugowanie)
Breakpoints (punkty przerwañ)
Show Next Statement (poka¿ kolejn¹ instrukcjê)
Step Over (wykonaj krokowo
bez wchodzenia do procedur)
Step Into (wykonaj krokowo z wchodzeniem do procedur)
Tryb œledzenia
umo¿liwia
kontrolowanie
wykonywania
programu
instrukcja po
instrukcji.
Rozdzia³ 8
Usuwanie b³êdów z programów
213
W poni¿szym æwiczeniu ustawisz punkt przerwania, a potem, pracuj¹c
w trybie œledzenia, znajdziesz i usuniesz b³¹d logiczny wykryty wcze-
œniej w instrukcji If...Then (b³¹d jest zawarty w programie). Aby wyizolo-
waæ problem, bêdziesz uruchamiaæ program krokowo za pomoc¹ przy-
cisku
Step Into
(wykonaj krokowo) z paska
Debug
. Za pomoc¹ okna
Autos
(czujki automatyczne) bêdziesz sprawdzaæ wartoœci kluczowych
zmiennych programu i w³aœciwoœci. Przyjrzyj siê uwa¿nie tym techni-
kom. Mog¹ one okazaæ siê przydatne w wielu twoich póŸniejszych pro-
jektach.
przycisk Start
(uruchom)
Analizowanie programu Debug Test
1.
Uruchom Visual Studio.
2.
Wybierz z menu
File
(plik) polecenie
Open
(otwórz) i kliknij opcjê
Project
(projekt).
Otworzy siê okno dialogowe
Open Project
(otwórz projekt).
3.
Otwórz projekt Debug Test (test debugowania) z folderu c:\vbnetsbs\
chap08\debug test.
Projekt zostanie otwarty w œrodowisku programowania.
4.
Jeœli formularz nie jest widoczny, wyœwietl go.
Program Debug Test pyta u¿ytkownika o wiek. Kiedy u¿ytkownik
kliknie przycisk
Test
, program informuje u¿ytkownika, czy jest na-
stolatkiem. Program ma wspomniany wczeœniej w rozdziale pro-
blem z 13-latkami. Otworzysz teraz pasek
Debug
i ustawisz punkt
przerwania, aby znaleŸæ problem.
5.
Jeœli pasek
Debug
nie jest widoczny, kliknij menu
View
(widok),
wska¿ polecenie
Toolbars
(paski narzêdzi), a potem kliknij opcjê
Debug
.
Pasek
Debug
pojawi siê pod paskiem
Standard
.
6.
Kliknij przycisk
Start
(uruchom) na pasku
Debug
.
Program zostanie uruchomiony i wyœwietli formularz Debug Test.
7.
Usuñ 0 z pola do wpisywania wieku, wpisz
14
, po czym kliknij przy-
cisk
Test
.
Program wyœwietli komunikat „You're a teenager”. Jak dot¹d pro-
gram podaje wynik poprawny.
8.
Wpisz
13
w polu do wpisywania wieku i kliknij przycisk
Test
.
Program wyœwietli komunikat „You're not a teenager”, jak pokaza-
no na rysunku:
Plik z chomika:
biker16
Inne pliki z tego folderu:
VBA Excel.pdf
(4792 KB)
Visual Basic dla Excela.pdf
(4792 KB)
Visual Basic (Excel).ppt
(348 KB)
MakrawExcel2.pdf
(271 KB)
Excel 2003 PL. Programowanie w VBA. Vademecum profesjonalisty.Tabele przestawne.pdf
(1159 KB)
Inne foldery tego chomika:
Pliki dostępne do 01.06.2025
Pliki dostępne do 19.01.2025
ABYGMNIC INSTRUKCJE OBSŁUGI
Al Bano & Romina Power - Greatest Hits (2CD) - 2009
ANDROID
Zgłoś jeśli
naruszono regulamin