Otklanjivač grešaka

S Vikipedije, slobodne enciklopedije
Winpdb debaguje samog sebe

Debager ili alatka za debagovanje je računarski program koji se koristi da testira i debaguje druge programe ("meta" program), kod kojeg treba da se proveri može li alternativno biti porkenut na simulatoru grupe instrukcija (ISS) — tehnika koja daje veliku moć njegovoj mogućnosti da se zaustavi kada su određeni uslovi ostvareni, ali će tipično biti sporiji nego izvršavanjem koda direktno na prikladan (ili isti) procesor. Neki debageri nude dva moda operacija — punu ili parcijalnu simulaciju, da bi se ograničio ovaj uticaj. 

"Zamka" se javlja kada program ne može normalno da nastavi zbog programskog baga ili netačnog podatka. Na primer, program će možda probati da koristi instrukciju koja nije dostupna na verziji CPU ili će pokušati da dobije pristup nedostupne ili zaštićene memorije. Kada se program "zaglavi" ili dostigne postavljeni uslov, debager obično pokaže lokaciju u originalnom kodu ako je to izvor-nivoa debager ili simbolički debager, često sada viđen u integrisanom razvojnom okruženju. Ako je debager niskog-nivoa ili jezik-mašin, a debager pokazuje liniju demontaže (osim ako ono takođe nema onlajn pristup originalnom izvornom kodu i može da prikaže prikladnu sekciju koda iz asemblera ili kompilatora).

Karakteristike[uredi | uredi izvor]

Tipično, debageri nude upitni procesor, rešavač simbola, interpretator ekspresije, i podrška debag sučelja pri njegovom najvišem nivou.[1] Debageri takođe nude prefinjenije funckije kao što je startovanje programa korak po korak (jednostavno- koračanje ili animacija programa), zaustavljanje (kidanje) (pauziranje programa da bi se ispitalo trenutno stanje) pri nekom događaju ili specifičnoj instrukciji od strane tačke prekida, i praćenje vrednosti varijabli.[2] Neki debageri imaju mogućnost da modifikuju stanje programa dok rade. Može takođe biti moguće nastaviti izvršavanje na drugoj lokaciji u programu preko zaobilaženja rušenja ili logičke greške.

Ista funkcionalnost koja čini debager korisnim za eliminisanje bagova dozvoljava da bude korišćena u alatki za krekovanje softvera da bi se izvegla zaštita kopiranja, menadžment digitalnih pravila, i ostale karakteristike protekcije softvera. Ono ga često čini korisnim kao generalna alatka provere, pokrivenost greške i analizer performansa, specijalno ako su instrukcije dužine puta pokazane. [3]

Većina redovnih debag motora, kao što su gdb i dbx, pružaju komandne linije sučelja baziranim na konzoli. Debagerovi napred-završice su popularne ekstenzije za debagerove motore koji pružaju IRO integraciju, programsku animaciju i vizuelne karakteristike. Neki raniji mejnfrejm debageri kao što su Oliver i SIMON pružili su ove iste karakteristike za   IBM Sistem/360 i za kasnije operativne sisteme, kao i davnih 1970-tih.

Obrnuto debagovanje[uredi | uredi izvor]

Neki debageri uključuju karakteristiku nazvanu "obrnuto debagovanje", takođe poznato kao "istorijsko debagovanje" ili "debagovanje unazad". Ovi debageri čine mogućim izvršavanje programa unazad kroz vreme. Različiti debageri imaju ovu karakteristiku. Majkrosoft Vižual Studio (2010 Ultimativna edicija, 2012 Konačna, 2013 Konačna i 2015 Enterprajs edicija) nudi IntelliTrace obrnuto debagovanje za S#, Vižual Bejsik .NET, i neke druge jezike, ali ne S++.  Debagovanje unazad takođe postoji za S, S++, Javu, Pajton, Perl i ostale jezike. Neki su otvorenog izvora; neki su vlasnički komercijalni softver. Neki obrnuti debageri usporavaju metu zbor reda veličina, ali najbolji obrnuti debageri prouzrokuju suporavanje za 2× ili manje. Obrnuto debagovanje je veoma korisno za određene tipove problema, ali se još ne koristi često .[4]

Jezička zavisnost[uredi | uredi izvor]

Neki debageri rade jednom specifičnom jeziku dok ostali mogu da rade na više lazika odjednom- Na primer ako je glavna meta program napisan u Kobolu ali poziva rutine asembler jezika i PL/1  podrutine, debager će možda morati da menja dinamično modove kako bi se prilagodio promenama u jeziku dok se one dešavaju.

Zaštita memorije[uredi | uredi izvor]

Neki debageri takođe obuhvataju zaštitu memorije kako bi izbegli kršenja skladištenja kao što je prekoračenje bafera. Ovo može biti veoma važno kod okruženja transakcije procesa gde je memorija dinamično izdvojena iz "bazena" memorije na zadatku pomoću osnova zadatka.

Podrška hardvera za debagovanje[uredi | uredi izvor]

Najviše modernih mikroprocesora imaju najmanje jednu od ovih karakteristika u njihovom CPU dizajnu da bi učinili debagovanje lakšim:

  • Podrška hardvera za jedno-koračni program, kao što je zamka zastava
  • Grupa instrukcija koja se susreće sa Popekovim i Goldbergovim zahtevima virtualizacije čini lakšim pisanje sofvera debagera koji radi na istom CPU kao debagovani softver; takav CPU može izvršiti unutrašnje petlje programa preko testa pri punoj brzini, i idalje ostati pod kontrolom debagera. 
  • U-sistemu programiranje omogućava spoljnom hardveru debagera da ponovo programira sistem pod testom (na primer, dodvajući ili otklanjajući instrukcija tačaka prekida). Mnogi sistemi sa takvom ISP podrškom takođe imaju druge hardver podrške debagovanja.
  • Hardver podrška za kod i podatke tačke prekida, kao što je adresa komparatora i vrednost podataka komparatora ili, sa znatno više posla uključenim, hardver greške strane.[5]
  • JTAG pristup sučelju hardvera debaga kao oni na ARM arhitekturi procesora ili korišćenje Nexus komandnog seta. Procesori korišćeni u ugrađenim sistemima tipično imaju obimnu JTAG podršku debaga. 
  • Mikro kontroleri mali kao šest igli je potrebno da koriste niske igle-brojače zamene za JTAG, kao što su BDM, Špijuniranje-preko-žice, ili debagWIRE na Atmel AVR. DebagWIRE, na primer, koristi bidirekciono signaliziranje na RESET igli. 

Debager prednji-krajevi[uredi | uredi izvor]

Neki od najviše sposobnih i popularnih debagera implementuju samo jednostavnu komandnu liniju sučelja (KLS)—često kako bi se povećala portabilnost i smanjila potrošnja resursa. Razvojnici tipično razmatraju debagivanje preko grafičkog korisničkog sučelja(GKS) lakšim i produktivnijim. Ovo je razlog za vizuelne prednje-krajeve, koji dozvoljavaju korisnicima da prate i kontrolišu podređeni CLI - samo debageri preko grafičkog korisničkog sučelja. Neki GKS debageri prednjih-krajeva su dizajnirani da budu kompatibilni sa različitim CLI-samo debagerima, dok su ostali naciljani od strane specifičnog debagera. 

Lista debagera[uredi | uredi izvor]

Neki široko korišćeni debageri su:

Raniji debageri miniračunara uključuju:

Raniji Mejnfrejm debageri uključuju (poređani po datumima izlazka):

Trenutni mejnfrejm debageri:

  • Debag alatka za z/OS [6]
  • XPEDITER i Otpremnik CICS
  • z/XDC [7]

Reference[uredi | uredi izvor]

Literatura[uredi | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]