Laboratorium 3 ============== Debuger ------- 1. Zadanie Trzy programy `prog[1-4]' zostana skompilowane po wywolaniu polecenia `make', po wejsciu do odpowiednich katalogow (TEKST, LISTA, CZYTAJ, WIERSZ). Te programy zawieraja bledy, ktore nalezy znalezc za pomoca debugera `gdb'. 2. Debuger Wywoluje sie go poleceniem: `gdb program'. Do ustawienia argumentow programu nalezy (wewnatrz debugera) uzyc polecenia: set args Na przyklad wywolaniu program -a -b c < d odpowiada wywolanie debugera: gdb program i wykonanie z jego wiersza polecen: set args -a -b c < d W debugerze warto pamietac o nastepujacych poleceniach: * help - wypisuje sciagawke; * quit - konczy prace z debugerem; * set args - ustawia argumenty wywolania programu (opisane wyzej); * b - ustawia pulapke; np.: b ustawi pulapke w biezacej linijce programu; b 27 ustawi pulapke w 27. linijce biezacego modulu (pliku zrodlowego); b main.c:18 ustawi pulapke w 18. linijce pliku main.c; * run - uruchamia sledzony program; * continue - kontynuuje wykonanie sledzonego programu po zatrzymaniu (np. z powodu pulapki); * s - wykonuje instrukcje z biezacej linijki, przechodzac do nastepnej; rozwija wywolania procedur; * n - wykonuje instrukcje z biezacej linijki, przechodzac do nastepnej; nie rozwija wywolan procedur; * bt - wypisuje informacje o zawartosci stosu wywolan procedur; * list - wypisuje kilka linijek biezacego pliku zrodlowego; mozna podac specyfikacje linijki, ktora chcemy obejrzec (tak samo, jak poleceniu b); * print - wypisuje wartosc dowolnego wyrazenia (w ktorym moga wystepowac nazwy zmiennych programu, a nawet wywolania procedur); skladnia wyrazen jest taka sama jak w jezyku C. 3. Uwagi (a) Aby program mogl byc sledzony przez debuger, nalezy go skompilowac z informacja uruchomieniowa (parametr -g kompilatora). (b) Dla wygodnej pracy z debugerem warto na poczatku (przed uruchomieniem programu poleceniem run) ustawic pulapke na poczatku funkcji main, wykonujac polecenie `b main'. (c) Na rainbow zainstalowano rowniez okienkowy front-end do gdb. Nosi on nazwe ddd.