C#:
Utilizzo di un debugger

Come fare:

Immagina di avere un piccolo programma che non funziona correttamente:

static void Main()
{
    int result = Sum(1, 2);
    Console.WriteLine(result);
}

static int Sum(int a, int b)
{
    return a + a; // Ops, dovrebbe essere a + b
}

Utilizzando il debugger di Visual Studio, imposta un punto di interruzione facendo clic sul margine sinistro accanto a return a + a;. Quando esegui il programma (con F5), l’esecuzione si fermerà lì. Passa il mouse sopra le variabili per ispezionarne i valori o usa la Finestra Immediata per valutare le espressioni. Vedrai che a è 1 e b è 2, ma a + a non è la somma che ci aspettavamo. Cambialo in a + b, continua l’esecuzione (F5) e, ecco fatto, la console visualizza 3.

Approfondimento

La storia del debugging risale agli anni ‘40, quando fu trovato un vero bug (una falena) in un computer all’avanguardia. Oggi, i debugger, come quello di Visual Studio, offrono una suite di funzionalità potenti, inclusi punti di interruzione, esecuzione passo dopo passo, finestre di osservazione e altro ancora.

Le alternative al debugger di Visual Studio includono opzioni open-source come GDB per i linguaggi in stile C o pdb per Python, e IDE cross-platform come JetBrains Rider o VS Code che offrono strumenti di debugging per C# e altri linguaggi.

Quando ti immergi nell’implementazione di un debugger, stai guardando un programma che si collega al processo della tua applicazione. Interpreta il codice macchina, gestisce lo stato della memoria e controlla il flusso di esecuzione. Questa è roba pesante che è fondamentale per un debugging efficace, motivo per cui la modalità debug spesso funziona più lentamente della modalità rilascio dove questi ganci non esistono.

Vedi Anche