Debug: che cos’è, cosa vuol dire e quali tecniche esistono

di Lorenzo Neri
Published: Last Updated on

Debug: che cos’è, cosa vuol dire e quali tecniche esistono? La parola di suo ha un significato tutt’altro che tecnichese, è nata proprio per via degli insetti. In questo articolo scopriremo nel dettaglio tutto questo.

Debug: che cos’è, cosa vuol dire e quali tecniche esistono? Partiamo dalla definizione: De-Bug letteralmente in inglese significa “rimozione degli insetti”.

Questo termine deve la sua nascita a un fatto a dir poco spiacevole.

Dobbiamo tornare nel lontano 1940 all’Università di Harvard.

Ciao, mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!

Un’impegnata Admiral Grace Hopper stava cercando di capire come mai il computer Mark II avesse dei problemi durante l’esecuzione di un programma: non le tornavano i conti.

A quei tempi, i computer erano tutt’altro che minuscoli: occupavano stanze intere e i circuiti di cui erano composti erano fatti da componenti enormi se paragonati ai computer di oggi!

Così Admiral decise di aprire il computer per capire cosa ci fosse di strano.

Ci trovò una falena.

Su un relè.

Ovviamente, la rimosse per far tornare il computer al suo funzionamento originale.

Da allora, fu coniato il termine “debug” e il suo significato si rifà a questa storia.

Oggigiorno per fortuna non abbiamo falene che volano dentro i nostri computer, ma il debug consiste nello scovare gli errori all’interno del codice per farlo funzionare correttamente.

Ecco che cos’è il “debug”, ma naturalmente si è evoluto.

Esistono differenti tecniche di debug e in questo articolo, scopriremo quali sono!

Debug: quali tecniche esistono?

Tra le varie tecniche, partiamo da una delle più semplici, anche perché è una delle prime che si impara quando si vuole imparare a programmare!

Stampa a video


Vediamo una delle tecniche di debug più comuni.

Può capitare che per distrazione o per convinzione personale siamo sicuri al 100% che una parte del nostro codice sia giusta in ogni sua parte.

Gli diamo in pasto dei dati e ci aspettiamo di ottenerne altri in uscita.

Ma non quelli desiderati.

Come fare quindi, a capire dove sta l’errore nella nostra porzione di codice?

Il trucco è inserire una riga che stampi a video i valori delle variabili, in modo tale da capire come queste vengano modificate:

console.log("la variabile pippo vale" + pippo);

Durante l’esecuzione, avremo dei messaggi stampati a video che ci faranno capire dove i conti non tornano.

Questa tecnica è efficace non solo per capire i valori assunti dai dati, ma anche per verificare se le nostre condizioni sono state scritte correttamente, oppure no.

Hai già capito cosa intendo? ;)

Sto parlando degli if-then-else.

Inserire delle stampe a video al loro interno, ci fa capire quando viene eseguito un ramo piuttosto che un altro:

if (k == 1) {
   console.log("la variabile k vale 1");
} else {
   console.log("la variabile k non vale 1");
}

Breakpoint


Questa è una delle tecniche di debug che può aiutarti di più per evitarti grosse perdite di tempo :D


Se non hai mai sentito questa brutta parola in vita tua, preparati perché stai per scoprire uno strumento magnifico!

In alcuni ambienti di sviluppo, i breakpoint permettono la sospensione temporanea dell’esecuzione del programma.

Questa tecnica purtroppo non si presta troppo bene con i linguaggi interpretati, con i linguaggi compilati funziona benissimo!

Come funziona il breakpoint

Solitamente, a sinistra del numero di riga del nostro codice, potrai notare che c’è un piccolo spazio, ci hai mai cliccato?

google javascript GIF


Questi sono i breakpoint: dall’inglese “punto di sospensione”.

Il breakpoint, come dicevo prima, sospende l’esecuzione del programma alla riga selezionata, ma non solo.

Oltre a sospendere l’esecuzione, ti permette di monitorare i valori delle variabili in tempo reale rispetto al punto del codice in cui hai inserito il breakpoint.

Il breakpoint torna molto comodo per verificare se le variabili hanno i valori che ti aspetti oppure no.

È molto probabile che tu abbia una domanda in informatica:

“Lorenzo, ma che differenza c’è tra usare il breakpoint e la stampa a video?”

La stampa a video viene eseguita se ovviamente non ci sono errori gravi.

Cosa intendo per errori gravi?

Variabili non valorizzate (poste a null), eccezioni e così via. Ci sono problemi che non permettono al programma di eseguire la stampa a video.

Riassumendo:

  • Stampa a video: utile, ma non ci aiuta in tutti i casi.
  • Breakpoint: ci permette di indagare l’esecuzione del codice in caso di errori gravi.

Debugging dinamico

In questa parte dell’articolo, ti parlerò di un’altra tecnica di debug, che non puoi sottovalutare, se sei un programmatore.

La programmazione è dinamica: la scrittura di un programma non è mai rigida, le linee di codice possono cambiare, così come l’uscita attesa dei dati!

Il debugging dinamico ti permette di modificare il comportamento del codice mentre il programma è in esecuzione.

Come?

Le variabili e le funzioni possono essere modificate al volo e questo ti permette di correggere e risolvere problemi al volo, senza dover ripetere l’intero processo.

Debugging statico

Questa tecnica permette di analizzare il codice senza eseguirlo.

È particolarmente utile in fase di sviluppo, per trovare errori e refactoring.

Conclusioni

Il debug è un’attività fondamentale nel processo di sviluppo del software.

Può sembrare noioso, ma ricorda che la qualità del tuo lavoro dipende anche dalla tua capacità di risolvere problemi.

Esistono diverse tecniche, come la stampa a video, i breakpoint e il debugging dinamico, che possono aiutarti a individuare e risolvere i problemi nel codice.

Ricorda sempre che la perseveranza è la chiave del successo!

Continua a scoprire di più con questi articoli!

2 commenti

Claudio La Rosa 07/07/2022 - 19:30

“Admiral Grace Hopper”, Admiral è il suo grado militare, non il suo nome!

Cmq complimenti per l’articolo!

Rispondi
Lorenzo Neri 08/07/2022 - 11:08

Ciao Claudio! A cosa fai riferimento?

Grazie mille :)

A presto!

Rispondi

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più