Che cos'è un debugger?

Completato

Durante il tuo viaggio come sviluppatore, c'è sempre quel momento in cui finisce per chiederti "Perché il mio codice non funziona?"

Perché il codice non funziona?

Lavorando all'applicazione per la vendita al dettaglio di Tailwind Traders, molto probabilmente ci si troverà spesso in una situazione simile. Quando è presente un bug nel programma, in genere ognuno ha il proprio modo di gestire il 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 al collega.
  • Esaminare di nuovo il codice per individuare il problema.
  • Prendere una boccata d'aria.
  • Aggiungere alcuni console.log('here') nel codice.

Per quanto alcuni di questi metodi possano avere un certo successo, è possibile ricorrere a un altro approccio che in genere funziona: usare un debugger. Ma cos'è esattamente un debugger?

Un debugger è uno strumento software usato 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. Il debugger funziona ospitando il programma nel proprio processo di esecuzione o eseguendo come processo separato collegato al programma in esecuzione, ad esempio Node.js.

I debugger sono disponibili in diverse varietà. Alcuni funzionano direttamente dalla riga di comando, mentre altri sono dotati di un'interfaccia utente grafica. In questo modulo verranno usati sia il debugger predefinito della riga di comando fornito con Node.js che 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:

  • 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 i valori delle variabili e i parametri di funzione in qualsiasi punto durante l'esecuzione del codice.

La gestione di un debugger rende più efficiente la ricerca di bug nel codice consentendo di comprendere rapidamente il funzionamento di un programma.

È quello che si vedrà nella sezione successiva.