GDB står för GNU Project Debugger och är ett kraftfullt felsökningsverktyg för C (tillsammans med andra språk som C++). Det hjälper dig att leta runt i dina C-program medan de körs och låter dig också se exakt vad som händer när ditt program kraschar. GDB arbetar på körbara filer som är binära filer som produceras av kompileringsprocessen.
För demo-ändamål körs exemplet nedan på en Linux-maskin med nedanstående specifikationer.
uname -a>

uname -a
Låt oss lära oss genom att göra: -
Starta GDB
Gå till din Linux-kommandotolk och skriv gdb.
gdb>
gdb
css opacitetsövergång
Gdb open prompt låter dig veta att den är redo för kommandon. För att avsluta gdb, skriv quit eller q.

Att sluta
Kompilera koden
Nedan finns ett program som visar odefinierat beteende när det kompileras med C99.
Notera: Om ett objekt som har automatisk lagringstid inte initieras explicit, är dess värde obestämt, där det obestämda värdet antingen är ett ospecificerat värde eller en traprepresentation.
Kompilera nu koden. (här test.c). g flagga betyder att du kan se de riktiga namnen på variabler och funktioner i dina stackramar, få radnummer och se källan när du går runt i den körbara filen. -std=C99 flagga innebär att du använder standard C99 för att kompilera koden. -o flagga skriver byggutdata till en utdatafil.
gcc -std=c99 -g -o test test.C>
gcc -std=c99 -g -o test test.C
Kör GDB med den genererade körbara filen
Skriv följande kommando för att starta GDB med den kompilerade körbara filen.
gdb ./test>
gdb ./test
Användbara GDB-kommandon:
Här är några användbara kommandon för att komma igång med GDB.
Kommando | Beskrivning |
---|---|
spring eller r | Kör programmet från början till slut. |
bryta eller b | Ställer in en brytpunkt på en viss linje. |
inaktivera | Inaktiverar en brytpunkt |
Gör det möjligt | Aktiverar en inaktiverad brytpunkt. |
nästa eller n | Kör nästa kodrad utan att dyka in i funktioner. |
steg | Går till nästa instruktion, dyker in i funktionen. |
lista eller l | Visar koden. |
tryck eller sid | Visar värdet på en variabel. |
sluta eller q | Går ur GDB. |
klar | Rensar alla brytpunkter. |
Fortsätta | Fortsätter normalt utförande |
Visa koden
Skriv nu l vid gdb prompt för att visa koden.

Visa koden
Ställ in en brytpunkt
Låt oss introducera en brytpunkt, säg rad 5.

Ställ in en brytpunkt
Om du vill sätta brytpunkt på olika linjer kan du skriva b linje nummer .Som standard visar jag bara de första 10 raderna.
Visa brytpunkter
För att se brytpunkterna, skriv info b.

Visa brytpunkter
Inaktivera en brytpunkt
Efter att ha gjort ovanstående, låt oss säga att du ändrade dig och att du vill återgå. Typ inaktivera b.

Inaktivera en brytpunkt
java är lika med metoden
Återaktivera en inaktiverad brytpunkt
Som markerats i den blå cirkeln blir Enb n för inaktiverad. 9. För att återaktivera den nyligen inaktiverade brytpunkten. Typ aktivera b.

Återaktivera en inaktiverad brytpunkt
Kör koden
Kör koden genom att skriva run eller r. Om du inte har ställt in några brytpunkter, kör kommandot run helt enkelt hela programmet.

Kör koden
Skriv ut variabelvärden
För att se värdet på variabel, skriv print variabelnamn eller sid variabelnamn .

Skriv ut variabelvärden
Ovanstående visar värdena lagrade vid x vid tidpunkten för exekvering.
Ändra variabelvärden
För att ändra värdet på variabel i gdb och fortsätta körningen med ändrat värde, skriv set variabelnamn .
Felsökning av utdata
Skärmbilden nedan visar värdena för variabler från vilka det är ganska förståeligt varför vi fick ett skräpvärde som utdata. Vid varje utförande av . /testa vi kommer att få en annan utdata.
Övning: Försök att använda set x = 0 i gdb vid första körningen och se resultatet av c.
Felsökning av utdata
GDB erbjuder många fler sätt att felsöka och förstå din kod som att undersöka stack, minne, trådar, manipulera programmet, etc. Jag hoppas att exemplet ovan hjälper dig att komma igång med gdb.
Slutsats
I den här artikeln har vi diskuterat GDB (GNU Debugger) som är ett kraftfullt verktyg i Linux som används för att felsöka C-program. Vi har diskuterat några av följande steg så att vi kan kompilera din kod med felsökningsinformation, köra GDB, ställa in brytpunkt, undersöka variabler och analysera programbeteende. Vi har också diskuterat GDB:s funktioner, såsom kodgranskning, brytpunktshantering, variabelmanipulation och programexekveringskontroll som tillåter oss att effektivt felsöka och lösa problem.