Che cos'è un debugger?
Prima o poi uno sviluppatore si trova ad affrontare quel momento in cui si chiede:
Perché il codice non funziona?
Porsi questa domanda è normale per qualsiasi sviluppatore. La soluzione consiste nel trovare e correggere i bug nel modo più semplice e rapido. Quando c'è un bug in un programma, di solito ognuno ha il proprio modo di gestire questo problema.
Probabilmente è già stato sperimentato almeno uno di questi approcci per il debug:
- Provare a eseguire di nuovo il programma, sperando che funzioni.
- Spiegare il problema a qualcun altro.
- Esaminare di nuovo il codice per individuare il problema.
- Prendere una boccata d'aria.
- Inserire alcuni messaggi
Console.WriteLine("here")
nel codice.
Con questi metodi si possono ottenere buoni risultati. L'approccio che comunemente è considerato più efficace è l'uso di un debugger. Ma cos'è esattamente un debugger?
Un debugger è uno strumento software che è possibile usare per osservare e controllare il flusso di esecuzione del programma con un approccio analitico. L'obiettivo di progettazione è individuare la causa radice di un bug e risolverlo. Funziona ospitando il programma nel proprio processo di esecuzione oppure eseguendolo come processo separato collegato al programma in esecuzione, come nel caso di .NET.
Sono disponibili debugger di diversi tipi. Alcuni funzionano direttamente dalla riga di comando, mentre altri sono dotati di un'interfaccia utente grafica. In questo modulo si userà il debugger grafico integrato di Visual Studio Code.
Perché usare un debugger
Se non si esegue il codice tramite un debugger, significa che probabilmente non si sa esattamente cosa sta accadendo all'interno del programma. Il vantaggio principale dell'uso di un debugger è che consente di controllare il programma in esecuzione. È possibile seguire l'esecuzione del programma una riga di codice alla volta. In questo modo, non è necessario cercare di indovinare quale sia il problema.
Ogni debugger dispone di un set di funzionalità specifico. Le due funzionalità più importanti presenti in quasi tutti i debugger sono le seguenti:
- Controllo dell'esecuzione del programma: È possibile sospendere il programma ed eseguirlo un'istruzione alla volta, in modo da vedere quale codice viene eseguito e in che modo influisce sullo stato del programma.
- Osservazione dello stato del programma: È ad esempio possibile esaminare il valore delle variabili e i parametri delle funzioni in qualsiasi momento durante l'esecuzione del codice.
La padronanza dell'uso del debugger è una competenza importante per uno sviluppatore, che spesso viene sottovalutata. Rende più efficiente la ricerca di bug nel codice e può aiutare a capire rapidamente il funzionamento di un programma.
È quello che si vedrà nella sezione successiva.