? Debugging ett program i huvudsak innebär att hitta fel och korrigera dem . A " bug" är ett litet fel i kod som eventuellt kringgå varsel på grund av en mängd olika faktorer. Eftersom datorprogram har blivit så komplicerat , kan även den minsta bugg orsakar stora problem ner linjen . Felsöka ett program i C innebär att man använder en debugger för att fånga fel . Dock är en debugger inte en ersättning för en programmerare som vet hur man ska leta efter och vattenlås fel . Kontroll Utgång
På mindre program , kan en programmerare kolla förmodligen vissa utgångar för att avgöra om programmet staten förblir korrekt under hela utförandet . I detta fall kan sätta ut uttalanden i ett program för att visa variabler som normalt inte är synliga för användaren garantera ett program fungerar - eller upp till vilken tidpunkt det fungerar innan kraschar :
int i = 0 ;
intj ,
j = someFunction ( i) //gör en del arbete på i och returnerar ett
värde
printf ( " % d " , j ) //print j till säkerställa j är ett legitimt värde Addera C Debuggers
Beroende på utvecklingen miljön bör en programmerare ha felsökning mjukvara tillgänglig att gälla för varje kod . Dessa program " gå igenom " ett program som körs , hålla reda på variabler och villkor tills ett fel uppstår . När felet inträffar , kommer debugger returnera information om felet . Även många debuggers tillåter programmerare att " gå igenom " kod en rad i taget , så att programmerare kan granska genomförandet av koden . För Linux-system , GNU Project Debugger ( gdb ) besitter denna funktionalitet ( gnu.org /s /gdb ) medan Windows-programmerare kan använda debugger som ingår i Visual Studio ( Microsoft.com /express ) .
Debuggers och brytpunkter
Debugging programvara används begreppet " brytpunkter " där en programmerare kan stoppa ett program mid - utförande under felsökning bestämma kod staten . Till exempel , om koden nedan kraschar vid någon punkt , kan programmeraren vet inte var eller när felet inträffade
int i, j ; .
I = getNumber ( ) ;
j = j + i ;
j = modify ( i, j ) ,
p Det kunde ha inträffat i getNumber funktionen Modifieringsfunktionen , eller någonstans tidigare i huvudprogrammet . En brytpunkt kan ställa en plats där koden stannar innan felet , så att programmerare kan utvärdera förutsättningarna innan fel uppstår.
Stega igenom kod
Complex felsökning kan innebära går rad för rad genom kod . När programmeraren identifierar ett eventuellt fel plats , kan han köra linjen programkod för rad , hålla reda på tillståndet i programmet tills ett fel uppstår . Detta gör det möjligt för programmerare att peka ut den exakta platsen för programmet , och backa för att se om villkoren i felet uppstod . I detta exempel
i = getNumber ();
j = j + i;
j = modifiera ( i, j) ;
om felet inträffar på " ändra" -funktion , då programmeraren kan backa , och hon kommer att upptäcka att " jag " fick ett felaktigt värde från " getNumber " och därmed skadad " ändra ".