logo

GDB (steg för steg introduktion)

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>
du namnger

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.

quit_gdb

Att sluta

Kompilera koden

Nedan finns ett program som visar odefinierat beteende när det kompileras med C99. lista-1



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.

brytpunkt

Visa koden

Ställ in en brytpunkt

Låt oss introducera en brytpunkt, säg rad 5.

info_b

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.

inaktivera

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.

aktivera-1

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.

första omgången

Å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.

utskriftsvärde_x

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.