logo

GDB (trinn for trinn introduksjon)

GDB står for GNU Project Debugger og er et kraftig feilsøkingsverktøy for C (sammen med andre språk som C++). Det hjelper deg å rote rundt i C-programmene dine mens de kjøres, og lar deg også se hva som skjer når programmet krasjer. GDB opererer på kjørbare filer som er binære filer produsert av kompileringsprosessen.

For demoformål er eksemplet nedenfor utført på en Linux-maskin med spesifikasjonene nedenfor.



uname -a>
unavn

unavn -a

La oss lære ved å gjøre: -

Start GDB

Gå til Linux-ledeteksten og skriv gdb.

gdb>

gdb



javascript kallefunksjon fra html

Gdb open prompt lar deg vite at den er klar for kommandoer. For å gå ut av gdb, skriv quit eller q.

quit_gdb

Å slutte

Kompiler koden

Nedenfor er et program som viser udefinert oppførsel når det kompileres med C99. liste-1



Merk: Hvis et objekt som har automatisk lagringsvarighet ikke initialiseres eksplisitt, er verdien ubestemt, der den ubestemte verdien enten er en uspesifisert verdi eller en fellerepresentasjon.

Kompiler nå koden. (her test.c). g flagg betyr at du kan se de riktige navnene på variabler og funksjoner i stabelrammene dine, få linjenummer og se kilden mens du går rundt i den kjørbare filen. -std=C99 flagg innebærer bruk av standard C99 for å kompilere koden. -o flagg skriver byggeutdataene til en utdatafil.

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

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

Kjør GDB med den genererte kjørbare filen

Skriv inn følgende kommando for å starte GDB med den kompilerte kjørbare filen.

gdb ./test>

gdb ./test

Nyttige GDB-kommandoer:

Her er noen nyttige kommandoer for å komme i gang med GDB.

Kommando Beskrivelse
løp eller r Utfører programmet fra start til slutt.
pause eller b Setter et bruddpunkt på en bestemt linje.
deaktiver Deaktiverer et bruddpunkt
muliggjøre Aktiverer et deaktivert bruddpunkt.
neste eller n Utfører neste kodelinje uten å dykke inn i funksjoner.
steg Går til neste instruksjon, dykker inn i funksjonen.
liste eller l Viser koden.
print eller s Viser verdien til en variabel.
slutte eller q Går ut av GDB.
klar Fjerner alle bruddpunkter.
Fortsette Fortsetter normal utførelse

Vis koden

Skriv nå l ved gdb-ledeteksten for å vise koden.

bruddpunkt

Vis koden

Sett et bruddpunkt

La oss introdusere et bruddpunkt, si linje 5.

info_b

Sett et bruddpunkt

Hvis du vil sette bruddpunkt på forskjellige linjer, kan du skrive b linjenummer .Som standard viser jeg bare de første 10 linjene.

Se bruddpunkter

For å se bruddpunktene, skriv info b.

deaktiver

Se bruddpunkter

Deaktiver et bruddpunkt

Etter å ha gjort det ovenfor, la oss si at du ombestemte deg og vil gå tilbake. Type deaktiver b.

aktivere-1

Deaktiver et bruddpunkt

Aktiver et deaktivert bruddpunkt på nytt

Som markert i den blå sirkelen, blir Enb n for deaktivert. 9. For å reaktivere det nylig deaktiverte bruddpunktet. Skriv aktiver b.

første forsøk

Aktiver et deaktivert bruddpunkt på nytt

Kjør koden

Kjør koden ved å skrive run eller r. Hvis du ikke har satt noen bruddpunkter, vil run-kommandoen bare utføre hele programmet.

utskriftsverdi_x

Kjør koden

Skriv ut variabelverdier

For å se verdien av variabel, skriv print variabelnavn eller s variabelnavn .

Skriv ut variabelverdier

Ovenstående viser verdiene som er lagret ved x på tidspunktet for utførelse.

Endre variabelverdier

For å endre verdien av variabel i gdb og fortsette kjøringen med endret verdi, skriv inn variabelnavn .

Feilsøking utgang

Skjermbildet nedenfor viser verdiene til variabler som det er ganske forståelig årsaken til at vi fikk en søppelverdi som utgang. Ved hver utførelse av . /test vi vil motta en annen utgang.

Øvelse: Prøv å bruke sett x = 0 i gdb ved første kjøring og se resultatet av c.

Feilsøking utgang

GDB tilbyr mange flere måter å feilsøke og forstå koden på, som å undersøke stack, minne, tråder, manipulere programmet osv. Jeg håper eksemplet ovenfor hjelper deg med å komme i gang med gdb.

linux make-kommando

Konklusjon

I denne artikkelen har vi diskutert GDB (GNU Debugger) som er et kraftig verktøy i Linux som brukes til å feilsøke C-programmer. Vi har diskutert noen av de følgende trinnene slik at vi kan kompilere koden din med feilsøkingsinformasjon, kjøre GDB, angi bruddpunkt, undersøke variabler og analysere programatferd. Vi har også diskutert GDBs funksjoner, slik som kodeundersøkelse, håndtering av bruddpunkt, variabel manipulering og programkjøringskontroll som tillater oss å effektivt feilsøke og løse problemer.