GDB pomeni GNU Project Debugger in je zmogljivo orodje za odpravljanje napak za C (skupaj z drugimi jeziki, kot je C++). Pomaga vam pobrskati po notranjosti programov C med njihovim izvajanjem in vam tudi omogoča, da vidite, kaj točno se zgodi, ko se vaš program zruši. GDB deluje na izvršljivih datotekah, ki so binarne datoteke, ki nastanejo v procesu prevajanja.
Za namene predstavitve je spodnji primer izveden na računalniku Linux s spodnjimi specifikacijami.
uname -a>

uname -a
Učimo se tako, da delamo: –
Zaženite GDB
Pojdite v ukazni poziv v sistemu Linux in vnesite gdb.
gdb>
gdb
klicanje funkcije js iz html
Poziv za odpiranje GDB vam pove, da je pripravljen za ukaze. Za izhod iz gdb vnesite quit ali q.

Prenehati
Prevedite kodo
Spodaj je program, ki kaže nedefinirano vedenje pri prevajanju s C99.
Opomba: Če objekt, ki ima samodejno trajanje shranjevanja, ni izrecno inicializiran, je njegova vrednost nedoločena, pri čemer je nedoločena vrednost nedoločena vrednost ali predstavitev pasti.
Sedaj prevedite kodo. (tukaj test.c). g zastava pomeni, da lahko vidite ustrezna imena spremenljivk in funkcij v svojih okvirih sklada, dobite številke vrstic in vidite vir, ko se sprehajate po izvršljivi datoteki. -std=C99 zastavica pomeni uporabo standarda C99 za prevajanje kode. -o zastava zapiše izhod gradnje v izhodno datoteko.
gcc -std=c99 -g -o test test.C>
gcc -std=c99 -g -o test test.C
Zaženite GDB z ustvarjeno izvršljivo datoteko
Vnesite naslednji ukaz, da zaženete GDB s prevedeno izvršljivo datoteko.
gdb ./test>
gdb ./test
Uporabni ukazi GDB:
Tukaj je nekaj uporabnih ukazov za začetek uporabe GDB.
Ukaz | Opis |
---|---|
teči ali r | Izvaja program od začetka do konca. |
zlom ali b | Nastavi prelomno točko na določeno vrstico. |
onemogočiti | Onemogoči prekinitveno točko |
omogočiti | Omogoča onemogočeno prekinitveno točko. |
naslednji ali n | Izvede naslednjo vrstico kode brez poglabljanja v funkcije. |
korak | Pojdi na naslednje navodilo in se potopi v funkcijo. |
seznam ali l | Prikaže kodo. |
tisk ali str | Prikaže vrednost spremenljivke. |
nehati ali q | Izstopi iz GDB. |
jasno | Počisti vse prekinitvene točke. |
nadaljevati | Nadaljuje normalno izvajanje |
Prikažite kodo
Zdaj vnesite l v poziv gdb, da prikažete kodo.

Prikažite kodo
Nastavite prelomno točko
Predstavimo prekinitveno točko, recimo vrstico 5.

Nastavite prelomno točko
Če želite prelomno točko postaviti v različne vrstice, lahko vnesete b številka_vrstice .Privzeto seznam ali l prikaže samo prvih 10 vrstic.
Ogled prelomnih točk
Če si želite ogledati prelomne točke, vnesite info b.

Ogled prelomnih točk
Onemogoči prekinitveno točko
Ko ste storili zgoraj, recimo, da ste si premislili in se želite vrniti. Tip onemogoči b.

Onemogoči prekinitveno točko
Znova omogočite onemogočeno prekinitveno točko
Kot je označeno v modrem krogu, Enb postane n za onemogočeno. 9. Za ponovno omogočanje nedavno onemogočene prekinitvene točke. Vnesite omogoči b.

Znova omogočite onemogočeno prekinitveno točko
Zaženite kodo
Zaženite kodo tako, da vnesete run ali r. Če niste nastavili nobene prekinitvene točke, bo ukaz run preprosto izvedel celoten program.

Zaženite kodo
java array sort
Natisnite vrednosti spremenljivk
Če želite videti vrednost spremenljivke, vnesite print ime_spremenljivke ali str ime_spremenljivke .

Natisnite vrednosti spremenljivk
Zgoraj so prikazane vrednosti, shranjene pri x v času izvajanja.
Spremenite vrednosti spremenljivk
Če želite spremeniti vrednost spremenljivke v gdb in nadaljevati izvajanje s spremenjeno vrednostjo, vnesite set ime_spremenljivke .
Izhod za odpravljanje napak
Spodnji posnetek zaslona prikazuje vrednosti spremenljivk, iz katerih je povsem razumljiv razlog, zakaj smo kot izhod dobili nepotrebno vrednost. Ob vsaki izvedbi . /test prejeli bomo drugačen rezultat.
Vaja: Poskusite uporabiti set x = 0 v gdb ob prvem zagonu in si oglejte rezultat c.
Izhod za odpravljanje napak
GDB ponuja veliko več načinov za odpravljanje napak in razumevanje vaše kode, kot je pregledovanje sklada, pomnilnika, niti, manipuliranje s programom itd. Upam, da vam bo zgornji primer pomagal pri začetku uporabe gdb.
Zaključek
V tem članku smo razpravljali o GDB (GNU Debugger), ki je močno orodje v Linuxu, ki se uporablja za odpravljanje napak v programih C. Razpravljali smo o nekaterih naslednjih korakih, da lahko vašo kodo prevedemo z informacijami o odpravljanju napak, zaženemo GDB, nastavimo prekinitveno točko, pregledamo spremenljivke in analiziramo vedenje programa. Razpravljali smo tudi o funkcijah GDB, kot so pregled kode, upravljanje prelomnih točk, manipulacija s spremenljivkami in nadzor izvajanja programa, ki nam omogočajo učinkovito odpravljanje napak in reševanje težav.