Jak najlepiej szukać błędów
adiqwo
Pewnie jak każdy z programistów masz potężnego wroga - błędy. To tak samo jak ja :). Najlepiej wypiszę wszystko w punktach:
- Jesli używasz Turbo Pascala, masz duże szanse na "przeżycie" przygody z błędami. Mimo to, czasami nawet TP nie pomoże. Oto kilka błędów i ich wyjaśnienie(jeśli to wszystko wiecie to proszę mnie nie obsypywać oczywistymi komentarzami):
Kod żródłowy:
Program Blad1;
Uses Crt;
Var
Liczba: Integer;
begin
{ bliżej nie opisane działania }
Liczba:=Liczba+1; { Tu jest błąd! }
end.
Myśli użytkownika niewtajemniczonego(i zbyt leniwego na dokładne sprawdzenie problemu :)):
CO??!!
Zaraz, zaraz, przypisanie się zgadza! Więc co się nie zgadza? Głupie pudło! Tyle czasu pracy i ten mi robi złośliwe uwagi tylko dlatego, że dobrze przypisałem! PHI!
Rozwiązanie: Zainicjuj zmienną Liczba!
Porada: Zawsze, gdy piszesz program, który jest długi, a w dodatku najbliższa operacja związana z daną zmienną jest więcej niż 15 linii od początku, zaraz po Begin zainicjuj ją jakąś wartością.
Kod źródłowy:
Program Blad2;
Uses Crt, Graph;
Var
Liczba: Integer;
begin
{ bliżej nie opisane działania }
InitGraph(...); { błąd! }
end.
Rozwiązanie: TP nie zgłosił Ci tym razem błędu w Uses, bo zakładam, że biblioteka Graph istnieje. Dlatego też nie szukaj błędu od Begin, ale od samiuteńkiego początku.
Porada: Po każdym zdaniu sprawdzaj, czy zawiera ono to, co chciałeś.
2. Przepisy na szukanie błędów są bardzo mnogie:
- Szukaj najpierw w linii wskazanej przez kompilator, później deklaracje zmiennych, potem deklaracje procedur; wreszcie inne rzeczy.
- Jeśli szukasz, szukasz aż do końca programu, zachowaj kolejność procedury ratunkowej:
Uses Inteligecja;
Procedure Ratunek;
begin
Rozum_Po_Polsku;
Mów_Po_Polsku;
Powiedz('Najpierw przeszukaj raz następny,');
Powiedz('Potem napisz program od nowa');
end;
:D
3. Sprawdź wersję kompilatora - niektóre są po prostu za stare na pewne rzeczy.
4. Czwartego punktu nie ma. Adiqwo wszedł do akcji i wyszedł z dumą :)
Słowa kluczowe nie powinny być zaznaczone w ciągach.
Większośc srodowisk ma debuggery zintegrowane... breakpoints/step in/trace over/watches/evaluate-modify... poza tym metoda tu_doszedlem (w wywaleniem na ekran wazniejszych danych)
Troszkę to krótkie :/ - ale fajne... PS: w moim przypadku jest podobnie jak z Drajwerem... "tu doszedłem" :) - w Delphi robię "showmessage" i wszystko jasne :)
Przepraszam - po prostu to mój pierwszy artykuł - nie miejcie mi tego za złe.
Aha. Spróbuję dorzucić opis debuggera!
TP inicjalizuje wszystkie zmienne globalne, dlatego przytoczony przykład jest błędny.
Używaj kolorowania składni (< delphi >< /delphi > ) i wcięć w kodzie.
Całość trochę mętnie napisana. Może dorzuć instrukcję obslugi debuggera?
ja tam sobie robie writeln('tu doszedlem'); (jezeli juz jestem w tp) po kazdej nie pewnej linii :)
// debugger prawdę Ci powie, poza tym gdy program wywala się pod kontrolą IDE, dowiesz się w której linijce wystąpił błąd - ŁF.
Hehe, i co, boicie się błędów nadal? :)