logo

GDB (trin for trin introduktion)

GDB står for GNU Project Debugger og er et kraftfuldt fejlfindingsværktøj til C (sammen med andre sprog som C++). Det hjælper dig med at finde rundt i dine C-programmer, mens de kører, og giver dig også mulighed for at se, hvad der præcist sker, når dit program går ned. GDB opererer på eksekverbare filer, som er binære filer produceret af kompileringsprocessen.

Til demoformål udføres eksemplet nedenfor på en Linux-maskine med nedenstående specifikationer.



uname -a>
unavn

unavn -a

Lad os lære ved at gøre: -

Start GDB

Gå til din Linux kommandoprompt og skriv gdb.

gdb>

gdb



css ændre billedstørrelse

Gdb åben prompt fortæller dig, at den er klar til kommandoer. For at afslutte gdb skal du skrive quit eller q.

quit_gdb

At holde op

Kompiler koden

Nedenfor er et program, der viser udefineret adfærd, når det kompileres ved hjælp af C99. liste-1



Bemærk: Hvis et objekt, der har automatisk lagringsvarighed, ikke initialiseres eksplicit, er dets værdi ubestemt, hvor den ubestemte værdi enten er en uspecificeret værdi eller en trap-repræsentation.

Kompiler nu koden. (her test.c). g flag betyder, at du kan se de rigtige navne på variabler og funktioner i dine stak-rammer, få linjenumre og se kilden, mens du træder rundt i den eksekverbare. -std=C99 flag indebærer brug af standard C99 til at kompilere koden. -o flag skriver build-outputtet til en outputfil.

gcc -std=c99 -g -o test test.C>

gcc -std=c99 -g -o test test.C

Kør GDB med den genererede eksekverbare

Skriv følgende kommando for at starte GDB med den kompilerede eksekverbare.

gdb ./test>

gdb ./test

Nyttige GDB-kommandoer:

Her er et par nyttige kommandoer til at komme i gang med GDB.

Kommando Beskrivelse
løb eller r Udfører programmet fra start til slut.
pause eller b Indstiller et brudpunkt på en bestemt linje.
deaktivere Deaktiverer et brudpunkt
aktivere Aktiverer et deaktiveret brudpunkt.
næste eller n Udfører den næste kodelinje uden at dykke ned i funktioner.
trin Går til næste instruktion, dykker ned i funktionen.
liste eller l Viser koden.
print eller s Viser værdien af ​​en variabel.
afslutte eller q Udgår af GDB.
klar Rydder alle brudpunkter.
Blive ved Fortsætter normal udførelse

Vis koden

Skriv nu l ved gdb-prompten for at få vist koden.

brudpunkt

Vis koden

Indstil et brudpunkt

Lad os introducere et brudpunkt, siger linje 5.

info_b

Indstil et brudpunkt

Hvis du vil sætte brudpunkt på forskellige linjer, kan du skrive b linjenummer .Som standard viser jeg kun de første 10 linjer.

Se brudpunkter

For at se brudpunkterne, skriv info b.

deaktivere

Se brudpunkter

Deaktiver et brudpunkt

Efter at have gjort ovenstående, lad os sige, at du har ændret mening, og du vil vende tilbage. Type deaktiver b.

aktivere-1

Deaktiver et brudpunkt

Genaktiver et deaktiveret brudpunkt

Som markeret i den blå cirkel bliver Enb til n for deaktiveret. 9. For at genaktivere det nyligt deaktiverede brudpunkt. Skriv enable b.

first_run

Genaktiver et deaktiveret brudpunkt

Kør koden

Kør koden ved at skrive run eller r. Hvis du ikke har indstillet nogen breakpoints, vil run-kommandoen blot udføre det fulde program.

udskriftsværdi_x

Kør koden

Udskriv variabelværdier

For at se værdien af ​​variabel skal du skrive print variabel_navn eller s variabel_navn .

Udskriv variabelværdier

Ovenstående viser værdierne gemt ved x på tidspunktet for udførelse.

Skift variabelværdier

For at ændre værdien af ​​variabel i gdb og fortsætte eksekveringen med ændret værdi, skriv sæt variabel_navn .

Debugging output

Nedenstående skærmbillede viser værdierne af variabler, hvorfra det er helt forståeligt grunden til, at vi fik en skraldværdi som output. Ved hver udførelse af . /prøve vi vil modtage et andet output.

Øvelse: Prøv at bruge sæt x = 0 i gdb ved første kørsel og se output fra c.

Debugging output

GDB tilbyder mange flere måder at fejlsøge og forstå din kode på, som at undersøge stack, hukommelse, tråde, manipulere programmet osv. Jeg håber, at ovenstående eksempel hjælper dig med at komme i gang med gdb.

linux make kommando

Konklusion

I denne artikel har vi diskuteret GDB (GNU Debugger), som er et kraftfuldt værktøj i Linux, der bruges til at fejlfinde C-programmer. Vi har diskuteret nogle af de følgende trin, så vi kan kompilere din kode med fejlfindingsoplysninger, køre GDB, indstille breakpoint, undersøge variabler og analysere programadfærd. Vi har også diskuteret GDBs funktioner, såsom kodeundersøgelse, breakpoint management, variabel manipulation og programudførelseskontrol, som giver os mulighed for effektivt at fejlsøge og problemløsning.