User Tools

Site Tools


dydaktyka:cprog:learning_resources:debugging

This is an old revision of the document!


Debuggowanie

Zdarza się, że choć program nie zawiera błędów składniowych (czyli kompiluje się bez problemów i da się go uruchomić), to jednak nie działa zgodnie z oczekiwaniami. W takich sytuacjach do zdiagnozowania przyczyny problemu przydaje się narzędzie o nazwie debugger.

Debugger (nazwa czasem tłumaczona na polski jako “odpluskwiacz” :-)) służy do krokowego wykonania programu (czyli instrukcja po instrukcji), z możliwością podglądu stanu programu (a więc m.in. wartości zmiennych) po każdym kroku.

:!: Debugger nie jest częścią języka – to narzędzie dostarczane (zazwyczaj) w ramach zintegrowanego środowiska programistycznego.

Podczas procesu debuggowania korzysta się z breakpoint-ów, które mówią debuggerowi tyle – “koniecznie zatrzymaj się tutaj”.

(Ciekawi Cię, skąd się wzięła nazwa “bug”? – Przeczytaj w wolnej chwili ten krótki fragment.)

Debuggowanie w CodeBlocks

Do nauki wykorzystaj poniższy kod:

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int i;
    int n = 2;
 
    printf("Zaczynamy...\n");
 
    for (i = 1; i < 5; i++) {
        n = n * n;
    }
 
    printf("Wynik = %d\n", n);
}

(W razie problemów z uruchomieniem debuggera zaglądnij do FAQ.)

Debuggowanie krok po kroku:

  1. Aby móc przystąpić do debuggowania, dodaj choć jeden breakpoint. W tym celu przejdź do linijki z pierwszą instrukcją printf() i wybierz Debug → Toggle breakpoint – po lewej stronie, koło numeru wiersza, pojawi się czerwona kropka (symbol breakpoint-u).
  2. Wybierz Debug → Start/Continue – uruchomiony zostanie proces debuggowania.
  3. Aby zobaczyć podgląd zmiennych, wybierz Debug → Debugging windows → Watches
  4. Przejdź program krok po kroku (Debug → Next line), aż do jego zakończenia, i obserwuj zmiany wartości zmiennych oraz zawartości okna konsoli.

W oknie Watches w pierwszej kolumnie możesz podać w wolnym polu u dołu dowolne poprawne wyrażenie – jego wartość zostanie automatycznie obliczona zgodnie z bieżącym stanem programu.
Dodaj wyrażenie x + 8 < 20 i ponownie prześledź zmianę wartości tego wyrażenia podczas kolejnych obiegów pętli.

Czasem interesuje Cię podgląd stanu programu tylko w kilku określonych miejscach – dodaj w nich breakpointy, a następnie przechodź pomiędzy nimi (czyli wykonuj automatycznie wszystkie instrukcje pomiędzy obecnym, a kolejnym breakpointem) za pomocą Debug → Start/Continue.
Dodaj drugi breakpoint przy drugim wywołaniu printf(). Uruchom debuggowanie, a następnie ponownie wybierz Debug → Start/Continue.

:!: Pod kątem dalszych studiów na kierunku Inżynieria Biomedyczna zapamiętaj – MATLAB także posiada debugger! :-D

dydaktyka/cprog/learning_resources/debugging.1475431983.txt.gz · Last modified: 2020/03/25 11:46 (external edit)