GDB staat voor GNU Project Debugger en is een krachtige foutopsporingstool voor C (samen met andere talen zoals C++). Het helpt je om rond te snuffelen in je C-programma's terwijl deze worden uitgevoerd, en je kunt ook zien wat er precies gebeurt als je programma crasht. GDB werkt met uitvoerbare bestanden, dit zijn binaire bestanden die worden geproduceerd door het compilatieproces.
Voor demodoeleinden wordt het onderstaande voorbeeld uitgevoerd op een Linux-machine met de onderstaande specificaties.
uname -a>

naam -a
Laten we leren door te doen: –
Start GDB
Ga naar je Linux-opdrachtprompt en typ gdb.
gdb>
gdb
paaseieren in Android
Gdb open prompt laat u weten dat het klaar is voor opdrachten. Om gdb af te sluiten, typt u quit of q.

Stoppen
Compileer de code
Hieronder staat een programma dat ongedefinieerd gedrag vertoont wanneer het wordt gecompileerd met C99.
Opmerking: Als een object met een automatische opslagduur niet expliciet wordt geïnitialiseerd, is de waarde ervan onbepaald, waarbij de onbepaalde waarde een niet-gespecificeerde waarde of een traprepresentatie is.
Compileer nu de code. (hier test.c). vlag betekent dat u de juiste namen van variabelen en functies in uw stapelframes kunt zien, regelnummers kunt krijgen en de bron kunt zien terwijl u door het uitvoerbare bestand loopt. -std=C99-vlag impliceert het gebruik van standaard C99 om de code te compileren. -o vlag schrijft de build-uitvoer naar een uitvoerbestand.
gcc -std=c99 -g -o test test.C>
gcc -std=c99 -g -o test test.C
Voer GDB uit met het gegenereerde uitvoerbare bestand
Typ de volgende opdracht om GDB te starten met het gecompileerde uitvoerbare bestand.
gdb ./test>
gdb./test
Handige GDB-opdrachten:
Hier zijn een paar handige opdrachten om aan de slag te gaan met GDB.
Commando | Beschrijving |
---|---|
rennen of r | Voert het programma van begin tot eind uit. |
breken of b | Stelt een breekpunt in op een bepaalde lijn. |
uitzetten | Schakelt een onderbrekingspunt uit |
inschakelen | Schakelt een uitgeschakeld breekpunt in. |
volgende of n | Voert de volgende regel code uit zonder in functies te duiken. |
stap | Gaat naar de volgende instructie en duikt in de functie. |
lijst of l | Geeft de code weer. |
afdrukken of blz | Geeft de waarde van een variabele weer. |
stoppen of q | Verlaat GDB. |
duidelijk | Wist alle breekpunten. |
doorgaan | Gaat door met de normale uitvoering |
Geef de code weer
Typ nu l bij de gdb-prompt om de code weer te geven.

Geef de code weer
Stel een breekpunt in
Laten we een breekpunt introduceren, bijvoorbeeld regel 5.

Stel een breekpunt in
Als u een breekpunt op verschillende regels wilt plaatsen, kunt u b typen regelnummer Standaard geeft lijst of l alleen de eerste 10 regels weer.
tostring-methode
Bekijk breekpunten
Om de breekpunten te zien, typt u info b.

Bekijk breekpunten
Schakel een breekpunt uit
Nadat u het bovenstaande heeft gedaan, stellen we dat u van gedachten bent veranderd en dat u terug wilt keren. Typ uitschakelen b.

Schakel een breekpunt uit
Schakel een uitgeschakeld breekpunt opnieuw in
Zoals aangegeven in de blauwe cirkel wordt Enb n voor gehandicapten. 9. Om het recentelijk uitgeschakelde breekpunt opnieuw in te schakelen. Typ inschakelen b.

Schakel een uitgeschakeld breekpunt opnieuw in
Voer de code uit
Voer de code uit door run of r te typen. Als u geen breekpunten hebt ingesteld, voert de opdracht run eenvoudigweg het volledige programma uit.

Voer de code uit
Variabelewaarden afdrukken
Om de waarde van de variabele te zien, typt u print variabele_naam of blz variabele_naam .

Variabelewaarden afdrukken
Het bovenstaande toont de waarden die zijn opgeslagen bij x op het moment van uitvoering.
Variabelewaarden wijzigen
Om de waarde van de variabele in gdb te wijzigen en door te gaan met de uitvoering met de gewijzigde waarde, typt u set variabele_naam .
Uitvoer debuggen
De onderstaande schermafbeelding toont de waarden van variabelen waarvan het heel begrijpelijk is waarom we een afvalwaarde als uitvoer kregen. Bij elke uitvoering van . /test we zullen een andere uitvoer ontvangen.
Oefening: Probeer set x = 0 in gdb te gebruiken bij de eerste keer uitvoeren en bekijk de uitvoer van c.
Uitvoer debuggen
GDB biedt veel meer manieren om uw code te debuggen en te begrijpen, zoals het onderzoeken van de stapel, het geheugen, de threads, het manipuleren van het programma, enz. Ik hoop dat het bovenstaande voorbeeld u op weg helpt met gdb.
Conclusie
In dit artikel hebben we GDB (GNU Debugger) besproken, een krachtig hulpmiddel in Linux dat wordt gebruikt voor het debuggen van C-programma's. We hebben enkele van de volgende stappen besproken, zodat we uw code kunnen compileren met foutopsporingsinformatie, GDB kunnen uitvoeren, breekpunten kunnen instellen, variabelen kunnen onderzoeken en programmagedrag kunnen analyseren. We hebben ook de functies van GDB besproken, zoals codeonderzoek, breekpuntbeheer, manipulatie van variabelen en controle over de programma-uitvoering, waardoor we efficiënt fouten kunnen opsporen en problemen kunnen oplossen.