JavaScript:
Utilizzo di un debugger
Come fare:
Ecco un po’ di codice JavaScript che non si comporta come previsto:
function buggyMultiply(a, b) {
return a + b; // Ops! Questo dovrebbe essere una moltiplicazione, non un'addizione.
}
let result = buggyMultiply(5, 3);
console.log('Risultato:', result);
L’output è incorretto:
Risultato: 8
Debuggiamo in Chrome DevTools:
- Apri questo JS in un browser.
- Fai clic destro e seleziona “Ispeziona” per aprire DevTools.
- Clicca sulla scheda “Sorgenti”.
- Trova il tuo frammento di codice o pagina e metti un punto di interruzione cliccando sul numero di riga accanto all’istruzione
return
. - Aggiorna la pagina per attivare il punto di interruzione.
- Controlla il pannello “Scope” per vedere le variabili locali
a
eb
. - Prosegui con il bottone “Passa oltre la prossima chiamata di funzione”.
- Individua il bug nell’istruzione
return
. - Correggi il codice:
function buggyMultiply(a, b) {
return a * b; // Corretto!
}
let result = buggyMultiply(5, 3);
console.log('Risultato:', result);
L’output corretto:
Risultato: 15
Approfondimento
Il concetto di debugging esiste sin dai primi giorni dell’informatica—una leggenda racconta che tutto iniziò quando una falena fu trovata dentro un computer negli anni ‘40! Oggi, i debugger JavaScript come gli strumenti integrati nei browser (Chrome DevTools, Strumenti per Sviluppatori Firefox) o debugger integrati nell’IDE (Visual Studio Code, WebStorm) offrono una quantità di funzionalità.
Alternative agli debugger integrati includono strumenti di terze parti come WebStorm o l’uso del buon vecchio console.log
per stampare gli stati delle variabili. Ma questi non offrono l’interazione in tempo reale e l’ispezione dettagliata fornite dai debugger.
Per quanto riguarda i dettagli di implementazione, la maggior parte dei debugger funziona in modo simile: consentono di impostare punti di interruzione che mettono in pausa l’esecuzione, di eseguire il passaggio attraverso il codice, ispezionare gli stati attuali delle variabili, osservare espressioni e persino manipolare valori al volo per testare diversi scenari.