mgr inż. Wacław Libront * Bobowa 2019

ZSO Bobowa, ul. Długoszowskich 1, 38-350 Bobowa, tel: 0183514009, fax: 0183530221, email: sekretariat@zsobobowa.eu, www: zsobobowa.eu

Lekcja

Błędy. Odpluskwianie.

  1. komunikaty
  2. błędy
  3. odpluskwianie

Jak zapewne zauważyłeś, każdy pisany przez Ciebie program nie jest wolny od błędów. Zapomniany średnik lub nawias, to tzw. błędy składniowe, które nie stanowią większego problemu, bo bardzo łatwo można je poprawić. Takie błędy zdarzają się zazwyczaj początkującym programistom, którym wydaje się, że komputer wszystko zrozumie.

Ale jeśli program się wykonuje i nie robi tego, czego się spodziewaliśmy, nie pokazuje takich wyników, jakie teoretycznie przewidzieliśmy lub co gorsza - zawiesza się w trakcie działania? - błędy muszą być w samej koncepcji logicznej programu. W dalszej części opis kilku często spotykanych błędów oraz wyjaśnienie działania tzw. odpluskwiacza (debuggera).

Podczas programowania w C++,  Pascalu czy w innych językach tzw. wysokiego poziomu, bardzo dokładnie kontrolowana jest składnia i większość typowych błędów eliminowana jest już na poziomie kompilacji.  Język JavaScript jest niezwykle tolerancyjny i stara się domyślić, "co autor miał na myśli". Więc strona będzie wyświetlała się w większości przypadków, nawet z różnorodnymi składniowymi błędami, ale nie będzie robiła tego, czego oczekujemy. Szukanie błędów jest w takich przypadkach jest naprawdę trudne.

Porządne środowisko programistyczne (w naszym przypadku edytor tekstu np. Notepad++) koloruje składnie, automatycznie wstawia wcięcia, wspomaga wpisywanie nazw funkcji i pilnuje zamykania nawiasów. Dzięki takim prostym zabiegom mamy możliwość eliminowania błędów składniowych już na etapie pisania. Weryfikacją poprawności wpisanego kodu jest uruchomienie programu - jeśli coś działa nie tak należy to poprawić.


Komunikaty
Uruchomiliśmy program, ale nie działa tak, jak powinien. Co zrobić? Możemy tak napisać nasz program (jego wstępną wersję), aby w newralgicznych momentach, na ekranie pokazywały się komunikaty, w których wypisywane będą wartości zmiennych, od których zależy poprawne działanie programu. Na ich podstawie możemy zorientować się, co nie jest tak, jak sobie to wyobrażaliśmy.

<script>
M_PI=3.14;
for (i=0; i < 100; i=i+1){
    R = 5 + i / 100;
    //sprawdzamy czy poprawnie obliczane jest R
    document.write(i+"  "+R+"<br>");
    VK= 4/3*M_PI*R*R*R;
    //sprawdzamy czy poprawnie obliczane jest VK
    //ale tylko dla konkretnych wartości i
    if (i >= 10 && i <= 20)
      document.write(i+"  "+VK+"<br>");
    RK=5/2;
    HK=VK/(M_PI*RK*RK);
    //sprawdzamy poprawność obliczeń HK
    if (HK >= 29.5 && HK <= 30.5)
      document.write(R+"  "+HK+"<br>");
  }  
</script>  

Przykładowe komunikaty zaznaczono kolorem czerwonym. Jeżeli badany fragment programu działa poprawnie, można usunąć komunikat lub (bezpieczniej) ustawić go jako komentarz (być może się jeszcze przyda).


Błędy w programach JS (i nie tylko)

...do opracowania...


Odpluskwianie - debuggowanie

...do opracowania...

Debugger Odpluskwiacz
Debugger jest programem (z reguły zintegrowanym ze środowiskiem programistycznym), który pozwala na kontrolę i analizę programu w trakcie jego działania, a w szczególności powinien pozwalać na:

Jak odpluskwiać?
Jest to zależne od środowiska, systemu, procesora, itp. Najważniejszym etapem podczas odpluskwiania jest umieszczenie w konkretnym miejscu programu punktów przerwań, tzw. breakpoints. Jeśli w trakcie wykonywania programy, debugger natknie się na takie przerwanie, to proces zostanie wstrzymany i będziemy mieli możliwość przeglądania zmiennych oraz wykonywania kolejnych instrukcji programu, „krok po kroku”. Oczywiście to tylko elementarne możliwości debuggerów, wystarczające jednak do typowej analizy niewielkich programów.


I to by było na tyle. Żmudne śledzenie zmiennych w kolejnych instrukcjach wykonywanego programu, to podstawowy sposób szukania błędów w działaniu programu. Reszta zależy od intensywnego wysiłku umysłowego programisty, który musi prześledzić program i ustalić „dlaczego robi, to co robi”, a nie „jak ja to sobie zaplanowałem”!