Debugger: nozioni fondamentali

Pubblicato da

Lo sviluppo di codice per progetti software tende a seguire una procedura abbastanza standard: 1) Si scrive il codice della fonte utilizzando linguaggio e istruzioni comprensibili, generalmente in un linguaggio di programmazione di alto livello come C++ o Java. Nei progetti più ampi, il codice è generalmente scritto in diversi moduli per facilitarne la comprensione. 2) Si combinano i proprio moduli in un'unica e ampia porzione di codice utilizzando un compilatore di software, che traduce il testo leggibile in codice a oggetti eseguibile dal minicontroller. 3) Si carica il proprio codice a oggetti nella memoria del computer e si inizia a eseguire il software. 4) Il codice non funziona.

Non c'è nulla di cui preoccuparsi, è del tutto normale. Il software commerciale di livello aziendale, infatti, contiene in media 20-30 errori, o bug, per mille linee di codice, anche in seguito al rilascio. Gli errori irreversibili fermano l'esecuzione del programma; gli errori non irreversibili consentono l'esecuzione del programma, ma i risultati non sono quelli attesi.

Come ci si deve comportare, quando il proprio programma non si comporta nel modo desiderato? A questo punto entra in gioco un altro software molto importante: il debugger.

Il processo di debugging consiste nell'individuare e risolvere gli errori (bug) presenti nel codice. Eseguire il debugging di un programma significa analizzare una porzione di codice contenente errori, isolare le fonti di qualunque problema e risolverle.

Un debugger è un programma che esegue un altro programma (come il proprio codice), consentendo all'utente di esercitare un livello di controllo sul codice durante l'esecuzione ed esaminarne alcuni articoli particolari quando si osservano comportamenti errati.

Funzioni base di un debugger

Quando si esegue un programma che contiene errori, le cose che si potrebbe voler fare o conoscere sono diverse:

  • Quale statement o espressione stava eseguendo il programma quando si è verificato l'errore irreversibile?
  • Se si verifica un errore irreversibile durante l'esecuzione di una funzione, quale linea di programma contiene la chiamata a tale funzione?
  • Quali sono i valori delle variabili del programma (compresi i parametri) in un punto particolare dell'esecuzione del programma?
  • Qual è il risultato della valutazione di una particolare espressione in un punto del programma?
  • Qual è la sequenza di statement che viene effettivamente eseguita in un programma?

Queste funzioni richiedono che l'utente sia in grado di esaminare i dati del programma; di ottenere un elenco delle funzioni attualmente in esecuzione; di stabilire dei breakpoint dove sospendere l'esecuzione del programma per consentire l'esame dei dati; di analizzare singolarmente gli statement di un programma per verificare cosa stia effettivamente accedendo.

Per offrire una visione più approfondita delle operazioni del codice originale, quasi tutti i debugger operano a livello di codice sorgente o simbolico. In sintesi, fanno in modo che all'utente sembri di eseguire gli statement in Java o C++ nel proprio programma sorgente, anziché nel codice macchina in cui gli statement sono stati effettivamente tradotti.

Quando si esegue il debugging del codice, generalmente è necessario esaminare diversi articoli allo stesso tempo: il codice in esecuzione, i registri hardware nel microcontroller, le specifiche posizioni di memoria e i breakpoint. Per questo motivo, è desiderabile visualizzare diverse finestre in formato GUI. La seguente figura 1 visualizza uno screenshot di un debugger, nel quale sono visibili alcune delle funzioni disponibili.

 

Figura 1: Screenshot di un debugger per Eclipse IDE, nel quale sono visibili molte finestre e le relative funzioni. (Fonte: Rice University)

Supporto hardware per debugger

A volte un altro programma, l'emulatore, simula lo stesso microcontroller rendendo inutile avere a disposizione il vero hardware, ma nei sistemi integrati generalmente si esegue il proprio codice nel kit di sviluppo del microcontroller o sulla scheda di produzione.

La maggior parte dei microcontroller include caratteristiche progettare specificamente per semplificare il debug, come supporto hardware per analizzare un'istruzione alla volta all'interno di un programma, modalità di test speciali e supporto per i breakpoint.

Pacchetti di strumenti software

In molti casi, i debugger, insieme ad altri strumenti di sviluppo software, vengono uniti in un solo pacchetto, detto IDE (Integrated Development Environment, ambiente di sviluppo integrato). Molti produttori di microcontroller forniscono IDE per i propri prodotti, messi a disposizione anche da fornitori terzi e perfino dalla community Open Source. L'Eclipse IDE illustrato nella Figura 1 è un prodotto open source.

Gli IDE possono essere prodotti individuali o (se di un produttore) raggruppati con hardware di sviluppo per un microcontroller particolare. Per iniziare in tutta facilità, Arrow offre una gamma di debugger, strumenti di sviluppo e IDE di numerosi produttori.

Ultime notizie

Sorry, your filter selection returned no results.

Non perderti le ultime novità sull'elettronica

Abbiamo aggiornato la nostra politica sulla privacy. Si prega di prendere un momento per rivedere questi cambiamenti. Cliccando su Accetto, l'utente accetta la Politica sulla privacy e Condizioni di utilizzo di Arrow Electronics.

Il nostro sito web mette i cookies sul vostro dispositivo per migliorare la vostra esperienza e il nostro sito. Leggete altre informazioni sui cookies che usiamo e su come disabilitarli qui. I cookies e le tecnologie di tracking possono essere usati per scopi commerciali.

Con un click su “Accept”, voi consentite l'inserimento dei cookies sul vostro dispositivo e l'uso da parte nostra di tecnologie di tracking. Per avere altre informazioni e istruzioni su come disabilitare i cookies e le tecnologie di tracking, clickate su “Read More” qui sotto. Mentre l'accettazione dei cookies e delle tecnologie di tracking è volontaria, una loro disabilitazione potrebbe determinare un funzionamento non corretto del sito web, ed alcuni messaggi di allarme potrebbero essere per voi meno importanti.

Noi rispettiamo la vostra privacy. Leggete qui la nostra politica relativa alla privacy