Che cosa è il debug in programmazione C?

August 11

Che cosa è il debug in programmazione C?


Debug di un programma significa essenzialmente trovare gli errori e correggerli. A "baco" è un piccolo errore nel codice che potrebbe sfuggire avviso a causa di una varietà di fattori. Perché programmi per computer sono diventati così complessi, anche il più piccolo errore può causare grossi problemi su tutta la linea. Debug di un programma in C comporta l'uso di un debugger per aiutare gli errori di cattura. Tuttavia, un debugger non è un sostituto per un programmatore che sa cercare e intercettare gli errori.

Controllo di uscita

Sul programmi più piccoli, un programmatore può probabilmente verificare alcune uscite per determinare se lo stato di programma rimane corretta durante l'esecuzione. In questo caso, l'inserimento di istruzioni di stampa in un programma per mostrare le variabili che normalmente non sono visibili per l'utente in grado di garantire un programma funziona - o fino a che punto funziona prima di schiantarsi:

int i = 0;

INTJ;

j = someFunction (i) // fa un po 'di lavoro sulla i e restituisce un valore

printf ( "% d", j) // stampa j per garantire j è un valore legittima

C debugger

A seconda dell'ambiente di sviluppo, un programmatore dovrebbe avere un software di debug a disposizione per applicare a qualsiasi codice. Questi programmi "a piedi attraverso" un programma durante l'esecuzione, tenendo traccia delle variabili e condizioni finché non si verifica un errore. Quando l'errore si verifica, il debugger restituirà informazioni sull'errore. Inoltre, molti debugger consentono programmatori a "passo attraverso" codice una riga alla volta, in modo che il programmatore può esaminare l'esecuzione del codice. Per i sistemi Linux, il Progetto GNU Debugger (gdb) possiede questa funzionalità (gnu.org/s/gdb) mentre i programmatori di Windows possono utilizzare il debugger incluso in Visual Studio (Microsoft.com/express).

Debugger e punti di interruzione

Debug software utilizza l'idea di "punti di interruzione", in cui un programmatore può fermare un programma a metà esecuzione durante il debug per determinare lo stato del codice. Ad esempio, se il codice qui sotto si blocca ad un certo punto, il programmatore potrebbe non sapere dove o quando si è verificato l'errore.

int i, j;

i = ControllaNumero ();

j = j + i;

j = modificare (i, j);

Esso potrebbe essere avvenuta nella funzione ControllaNumero, la funzione di modifica, o qualcosa all'inizio del programma principale. Un punto di interruzione può impostare un luogo in cui il codice ferma prima che l'errore, in modo che il programmatore può valutare le condizioni prima che si verifichi l'errore.

Facendo un passo attraverso il codice

debug complessi possono comportare andare riga per riga tramite il codice. Una volta che il programmatore identifica una possibile posizione di errore, si può eseguire la riga codice di programma per riga, tenendo traccia dello stato del programma finché non si verifica un errore. Questo permette al programmatore di individuare la posizione esatta del programma e marcia indietro per vedere dove le condizioni dell'errore origine. In questo esempio,

i = ControllaNumero ();

j = j + i;

j = modificare (i, j);

Se l'errore si verifica alla funzione "modifica", quindi il programmatore può fare marcia indietro, e lei scoprirà che "i" ha ricevuto un valore cattivo da "ControllaNumero", e quindi danneggiato "modificare".