This is an old revision of the document!
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.)
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:
printf()
i wybierz Debug → Toggle breakpoint – po lewej stronie, koło numeru wiersza, pojawi się czerwona kropka (symbol breakpoint-u).
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!