====== Esercitazione 1 ====== Illustrazione dei principali comandi emacs. Cenni a vi. Principali differenza tra ANSI C e C99. Illustrazione uso del debugger gdb su un semplice programma. Esercizio sul debugger gdb. ===== Illustrazione uso gdb ===== Vediamo come si usa il debugger [[http://www.gnu.org/software/gdb| gdb]] usando is codice usodebug.c contenuto in {{:informatica:sol:laboratorio16:esercitazionia:debug.tgz| questo}} tarball. I comandi del ''gdb'' da ricordare sono: \\ - run ( r ), break ( b ), step ( s ), next ( n ), print ( p ), set args , backtrace ( bt ), finish, continue ( c ), quit ( q ). ===== Esercizio 1 ===== Usare il debugger ''gdb'' (o per chi vuole la sua interfaccia grafica [[http://www.gnu.org/software/ddd|ddd]] ) per trovare gli errori in ''findbug.c'' (nello stesso tarball precedente) e correggerli. Compilare il codice nel seguente modo (ATTENZIONE all'opzione "-g" che abilita le informazioni di debugging): gcc -std=c99 -g findbug.c -o findbug quindi lanciare l'eseguibile e verificare quali errori produce, poi usando il debugger: $ gdb ./findbug inserire un breakpoint nel main ed eseguire il programma step-by-step. Identificato l'errore modificare il programma opportunamente. Trovare il bug nel file ''findbug2.c'' (nello stesso tarball) ===== Esercizio 2 ===== Scrivere un programma C che stampa a video tutta la lista degli argomenti (argv) e tutte le variabili d'ambiente del programma (envp). Ricordare che una possibile segnatura della funzione main e': int main(int argc, char *argv[], char *envp[]);