You are on page 1of 6

Upotreba dibagera u sistemskom programiranju

Jasmin Pavlović, 11/09-10

Uvod
Kako vaši programi postaju komplikovaniji javlja se potreba za praćenjem izvršavanja programa
korak po korak. Ovde debugger nalazi svoju primenu. Poznata je činjenica da dibagovanje
zauzima više od 50% vremena prilikom izrade programa. Treniranje upotrebe dibagera
programera početnika veoma je bitna stavka u njegovom profesionalnom razvoju. U cilju
osposobljavanja programera početnika za pisanje programa bez grešaka i korišćenje dibagera
neophodno je poboljšanje razumevanja funkcionisanja programa i akumuliranje iskustva.
Dibagovanje može biti veoma teško, čak frustrirajuće, posebno za početnike. Studenti, u većini
slučajeva, koriste dibager izvan učionice. Profesori retko imaju priliku da posmatraju studente
dok rade sa dibagerom. Najveći deo istraživanja o debugging-u sproveden je tokom 80-ih godina.
Neka od tih istraživanja su relevantna čak i danas, ali većina nije. Stvari su se mnogo promenile u
poslednjih 30 godina. Došlo je do napretka u razvoju programskih jezika i razvojnih okruženja.
Dibagovanje prvenstveno služi za otklanjanje grešaka u kodu. Greška je pronadjena ako je
student u mogućnosti da identifikuje liniju koda u kojoj se greška nalazi. Ispravljanje greške
podrazumeva ispravnu izmenu linije koda, najčešće posle nekoliko neuspešnih izmena, u cilju
dovođenja programa u radno stanje.

Primer upotrebe dibagera u Code::Block-u

Slika 1. Debug alati


1 Memory - Prikaz memorijskih lokacija
2 Call stack - Prikaz stanja na stack-u
3 Disassembly - Prikaz asemblerskih instrukcija
4 Watches - Prikaz promenljivih
5 Running threads - Prikaz niti
6 Cpu Registers - Prikaz stanja registara na procesoru
7 Breakpoints - Prikaz prekidnih tačaka

U nastavku će biti objašnjeno korišćenje osnovnog koncepta debugging-a.


Na slici 2 nalazi se primer koji može biti analiziran liniju po liniju posmatranjem promena posle
izvršenja svake linije koda.

Slika 2. Primer koda

Pre svega je neophodno odrediti mesto u kodu kod kojeg će se program pauzirati. Potrebno je
kliknuti na Debug pa zatim na Run to Cursor. Pozicija kursora označava početnu liniju od koje
će se dalje izvršavanje programa pratiti. Sledeći korak je određivajne zaustavne tačke ne bi li bilo
moguće ispitati rezultate dosadašnjeg učinka programa. Ovo se postiže postavljanjem kursora na
željenu liniju koda kod koje želimo prekid izvršavajna. Mesto na kojem se program prekida
naziva se Breakpoint. Da bismo posmatrali određenu promenljivu tokom izvršavanja programa
neophodno je otvoriti Watches prozor. Potrebno je kliknuti na Debug i zatim iz padajućeg menija
izabrati Debugging Windows – Watches. Žutom strelicom je označeno mesto prekida, što znači
da se, u našem slučaju, program izvršio do linije 12. U prozoru Watches vidimo da je vrednost
promenljive x inicijalizovana na 11 a vrednost promenljive y na 33 (slika 3).
Slika 3. Izvršavanje koda do linije 12

U sledećoj liniji koda poziva se funkcija swapv(x, y). Da bismo videli šta se dešava prilikom
poziva i izvrsavanja funkcije potrebno je iz menija Debug izabrati stavku Step into(Shift - F7).
Sada smo na liniji 20. U prozoru Watches vidimo argumente funkcije i njihove vrednosti.
Pritiskom na taster F7 debbuger izvršava sledeću liniju koda. Na ovaj način možemo ispratiti šta
se dešava unutar funkcije. Kada ste završili sa debugging-om možete kliknuti na stavku Continue
iz menija Debug i vaš program će se izvršiti do kraja. Moguće je koristiti i stavku Stop debugger.
Continue komanda je ipak bolje rešenje zato što program stiže do prirodnog kraja. Ako se vaš
program zaglavi u petlji ili niste sigurni da možete izaći iz programa bezbedno, možete iskoristiti
komandu Stop Debugger. Moguće je detaljnije definisati mesta pauze u vašem programu. Ovo je
omogućeno postavljanjem breakpoint-a u kod. Možete imati više prekidnih tačaka u kodu. Kada
debugger naiđe na breakpoint program se pauzira i debugger vam dozvoljava inspekciju koda.
Breakpoint se zadržava na formi sve dok ga ne uklonite. Da biste dodali breakpoint pritisnite
taster F5 ili kliknite desno od broja linije koda. Na slici 4 breakpoint je prikazan crvenom tačkom.
Slika 4. Dodavanje breakpoint-a

Posle dodavanja breakpoint-a na željeno mesto izvršavanje programa možete započeti pritiskom
na stavku Start iz Debug menija. Program se izvršava sve dok ne stigne do crvenog kružića. Kada
stigne do prvog breakpointa program se pauzira. Unutar crvenog kružića pojavljuje se žuti
trougao.

Slika 5. Izvršavanje koda do breakpoint-a


Možete dodati višestruke tačke prekida pritiskom na tasterom F5. Na slici 6 vidimo tačke prekida
na liniji 9 i liniji 12. Ako pokrenemo izvršavanje programa primetićemo da se program izvršio do
linije 9.

Slika 6. Postavljanje višestrukih breakpoint-a

Ako iz menija Debug izaberemo stavku Continue(Ctrl-F7) program zaustavlja


izvršavanje kod linije 12 zato što je stigao do drugog breakpoint-a. Kada opet zadamo
komandu za nastavak, Continue, program se izvršava do kraja jer ne postoje tačke
prekida u nastavku.

Zaključak
U prethodnom tekstu smo analizirali primer primene dibagera na konkretnom programu i
možemo izvući određene zaključke. Upotreba dibagera ne samo da skraćuje vreme
detektovanja i ispravljanja grešaka već i omogućava sticanje suštinskog razumevanja
funkcionisanja programa. Korišćenjem dibagera ubrzavate process razvijanja programa i
time povećavate svoju produktivnost.
Literatura
Lee, G.L. (1998). Debug It: A debugging practicing system.( J. C.W. Wu, Ed) Taipei:
Pergamon.

Fitzgerald, S.F. (2008). Debugging. (R.M. McCauley & G.L. Lewandowski, Eds.)
St. Paul: Routledge.

Johnson, H.J. (2010). Windows System Programming. Boston: Addison-Wesley.

Goetz, L.W. (2006). Code::blocks Student Manual. Brooklyn: Brooklyn College of


CUNY.

You might also like