prof. Nunzio Brugaletta
Sviluppo in C++: strumenti in ambiente Linux

EnneBi - Programmazione
Avanti - Indietro - Inizio

Il supporto di Emacs al debugging

In Emacs sono incluse librerie che ne permettono una integrazione con alcuni debugger e, in modo particolare, con GDB, il debugger del progetto GNU.

Per prima cosa se si vuole effettuare il debugging di un programma è necessario compilarlo con una opzione che permette di inserire nell'oggetto le informazioni utili per il debugging. Tali informazioni, infatti, poiché occupano spazio facendo aumentare le dimensioni del file oggetto, di solito non vengono incluse. Per aggiungere tali informazioni bisogna utilizzare il flag -g nella riga di comando della compilazione. In definitiva, per la compilazione del file sorgente prova.cpp con le informazioni per il debugging, la linea di comando da digitare, da Emacs selezionando Tools > Compile, è:

c++ -g -o prova prova.cpp

In questo caso viene generato l'oggetto prova contenete le informazioni che servono a GDB. L'integrazione del debugger in Emacs permette l'interazione con il sorgente del programma sul quale è stata avviata la sessione di debugging.

Per avviare la sessione di debugging si seleziona Tools > Debugger (GDB). Nel minibuffer viene proposto il comando per l'avvio:

gdb –-annotate=3 prova

Il livello 3 dell'opzione annotate permette di abilitare nel menù di Emacs una voce per la gestione facilitata della sessione di debugging. Il nome prova è il nome del file oggetto.

Avviato il debugger cambia la barra delle icone di avvio rapido.

barra icone gdb

icona print

(print) Stampa il valore attualmente contenuto nella variabile su cui è posizionato il cursore. Grazie alle capacità di integrazione dell'ambiente Emacs, il cursore può essere posizionato sopra il nome di una variabile contenuto in una riga del sorgente.

icona watch

Watch della variabile su cui si trova il cursore.

icona go

Avvia o continua l'esecuzione del programma fino al prossimo break, se esiste, o fino all'ultima istruzione.

icone step next

Servono a gestire l'esecuzione step-by-step del programma dopo un break. Selezionare la prima icona (Next Line) permette l'esecuzione della prossima istruzione del programma. Se l'istruzione è una chiamata di funzione viene trattata come unica istruzione e le istruzioni contenute nella funzione vengono eseguite senza interruzioni. La seconda icona (Step Line) consente invece di entrare nella funzione. La terza icona (Finish Function) consente, quando si sta eseguendo una istruzione contenuta in una funzione, di eseguire le rimanenti istruzioni della funzione senza interruzioni.

icona help

Avvia un nuovo frame con il manuale del sistema grafico di GDB.

I breakpoint si possono settare con Mouse-1 all'inizio della riga del sorgente. Un punto rosso indica il punto di arresto che può essere tolto nuovamente con Mouse-1 sul punto.

L'avvio del debugger provoca anche la visualizzazione del nuovo menù Gud:

menu gud

Le opzioni del menù consentono una facile interazione con le funzionalità del debugger. I sotto menù GDB-Frames e GDB-Windows permettono la visualizzazione, il primo ognuno in un frame diverso, il secondo nello stesso frame suddividendolo, delle variabili locali del programma in esecuzione (Locals) o dei breakpoint definiti (Breakpoints), in modo da osservare, mano a mano che le istruzioni del programma sono eseguite, come cambia il contenuto delle variabili osservate e rendersi conto, per esempio, quale è l'istruzione che produce un risultato non coerente con quello atteso.



Avanti - Indietro - Inizio

http://ennebi.solira.org
ennebi@solira.org