====== Esercitazione debugging ====== I {{:fisica:informatica:201516:primoanno:esempio_debugging.pdf|lucidi introduttivi}} per il debugging. Eseguire con i debugger [[https://www.gnu.org/software/ddd/|ddd]] e/o [[http://www.gnu.org/software/gdb/|gdb]] e trovare il problema nei seguenti programmi. ===== Esercizio 1: Aggiornamenti ===== #include #include #include #include #define N 5 /* globali */ int z[N+1]; int a[N-1]; int i; void aggiorna (int k); int main(void) { srand(time(NULL)); i=0; while (i in pratica il codice, salvato in "file.c" compilato con gcc -Wall -pedantic -o ese file.c ed eseguito con $ ./ese va inspiegabilmente in ciclo all'interno del ciclo. Per eseguire in modalita' interattiva di debugging: * Compilare con opzione "-g", ad esempio gcc -Wall -pedantic -g -o ese file.c * lanciare l'eseguibile usando il debugger come in $ ddd ./ese * oppure in $ gdb ./ese a questo punto e' possibile fermare il programma durante la sua esecuzione, ispezionare le variabili etc.. ===== Esercizio 2: Debuggare codice altrui ... ===== //Per i solutori piu' che abili//. Trovare l'errore... #include #include void leggi( char *[]); void stampa(char *[], int); int main() { char *a[3]={"alberello","rosea","roma"}; char *b = NULL; leggi(a); return 0; } void stampa(char *arch[],int sizeA) { int i; printf("i loro indirizzi sono:\n"); for(i=0;i