Den normale proces til udvikling af computerprogrammer går noget som sådan: skriv nogle kode, kompilér koden, kør programmet. Hvis programmet ikke virker som forventet, så går du tilbage til koden for at søge efter fejl (fejl) og gentag cyklen igen.

Afhængigt af programets kompleksitet og arten af ​​fejlene, er der tidspunkter, hvor du kan gøre med yderligere hjælp til at spore fejlene. Dette er hvad en "debugger" gør. Det giver dig mulighed for at undersøge et computerprogram, mens det kører. Du kan se værdierne for de forskellige variabler, du kan undersøge indholdet af hukommelsen, og du kan stoppe programmet på et bestemt tidspunkt og gå gennem koden en linje af gangen.

Den primære debugger på Linux er GNU debuggeren (gdb). Det kan allerede være installeret på dit system (eller en slanket version kaldet gdb-minimal), men vær sikker på at skrive følgende kommando i en terminal:

 sudo apt-get install gdb 

For at bruge debuggeren skal du fortælle compileren at inkludere fejlfindingsoplysninger i binæret. Opret en fil kaldet "hello10.c" ved hjælp af nano:

 nano hello10.c 

Kopier og indsæt i følgende kode:

 #include main () {int i; for (i = 0; i <10; i ++) printf ("% d", i); } 

"-g" -flagget fortæller kompilatoren at producere fejlsøgningsoplysninger, så at kompilere programmets brug:

 gcc -g -o hej10 hello10.c 

For at starte debugging af programtypen:

 gdb hello10 

På dette tidspunkt, hvis du bare begynder at køre programmet (ved hjælp af kommandoen "run"), vil programmet udføre og afslutte, før du får chancen for at gøre noget. For at stoppe det skal du oprette et "breakpoint", som stopper programmet på et bestemt tidspunkt. Den nemmeste måde at gøre dette på er at fortælle debuggeren at stoppe i funktionen "main ()":

 bryde hoved 

Start nu programmet:

 løb 

Fejlfinderen er stoppet ved den første eksekverbare linje af kode, fx "for" -sløjfen. For at gå til næste linje, skriv "næste" eller "n" for kort. Fortsæt med at bruge "næste" for at gentage rundt om løkken et par gange:

For at inspicere værdien af ​​en variabel, brug kommandoen "print". I vores eksempelprogram kan vi undersøge indholdet af variablen "i":

 print i 

Gentag rundt om løkken og få flere gange og se hvordan "jeg" ændrer sig:

 næste næste næste næste print i 

I eksemplet ovenfor har "jeg" nået værdien 4. Loopen fortsætter, mens "i" er mindre end 10. Du kan ændre værdien af ​​en variabel ved hjælp af "set var". Indtast følgende i gdb for at indstille "i" til 10.

 sæt var jeg = 10 udskrive jeg næste 

Du skal muligvis gøre et andet "næste" (afhængigt af hvor programmet blev standset, når du indstiller "i" til 10), men når "for" -linjen udføres næste gang sløjfen slutter, fordi "jeg" er nej længere mindre end 10.

Kommandoen "næste" bore ikke ned i funktioner, men snarere udføres funktionen, og debuggeren stopper igen ved næste linje efter funktionen. Hvis du vil gå ind i en funktion, skal du bruge kommandoen "trin" eller "s" for kort.

En anden måde at debug dit program på er at indstille et ur på en variabel. Hvad dette gør er at stoppe programmet, når variablen ændres. Genstart programmet igen ved at skrive "Kør". Da programmet allerede kører, spørger debuggeren om du vil starte det igen fra starten.

Programmet vil stoppe i main (som vi ikke fjernede break point). Nu sæt et ur på "jeg":

 se, jeg fortsætter 

Kommandoen "fortsæt" starter programmet kører igen, indtil næste pause tilstand. I dette tilfælde vil det køre igen, indtil variablen "jeg" ændres (på grund af uret).

For at stoppe fejlfinding skal du blot bruge kommandoen "Afslut".

Hvis du vil lære mere om gdb, så er et godt sted at starte GDB-dokumentationen. Hvis du har problemer med eksemplerne ovenfor, kan du bruge kommentarafsnittet nedenfor, og vi vil se, om vi kan hjælpe.