Jak najlepiej szukać błędów

Pewnie jak każdy z programistów masz potężnego wroga - błędy. To tak samo jak ja :). Najlepiej wypiszę wszystko w punktach:
1. 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ą :)
Informacje
Ostatnia modyfikacja 27-10-2003 16:50 Ostatni autor adiqwo
Ilość wyświetleń 7552 Wersja 1
Komentarz
TKW dnia 05-09-2004 15:40
Słowa kluczowe nie powinny być zaznaczone w ciągach.
flabra dnia 14-03-2004 06:12
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)
Deti dnia 28-10-2003 16:59
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 :)
adiqwo dnia 28-10-2003 15:11
Przepraszam - po prostu to mój pierwszy artykuł - nie miejcie mi tego za złe.
adiqwo dnia 28-10-2003 15:08
Aha. Spróbuję dorzucić opis debuggera!
ŁF dnia 27-10-2003 20:18
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?
Drajwer dnia 27-10-2003 19:18
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.
adiqwo dnia 27-10-2003 16:51
Hehe, i co, boicie się błędów nadal? :)

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0611 sek. (zapytań SQL: 9)