logo

GDB (uvod po korakih)

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

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.

quit_gdb

Prenehati

Prevedite kodo

Spodaj je program, ki kaže nedefinirano vedenje pri prevajanju s C99. seznam-1



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.

prelomna točka

Prikažite kodo

Nastavite prelomno točko

Predstavimo prekinitveno točko, recimo vrstico 5.

info_b

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.

onemogočiti

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.

omogoči-1

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.

first_run

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.

izpisna_vrednost_x

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.