Strumenti Utente

Strumenti Sito


fisica:informatica:201819:esercitazioni:esercitazionedeb

Esercitazione debugging

Esercizio 1: Aggiornamenti

Eseguire con i debugger ddd e/o gdb e trovare il problema nel seguente programma.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#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<N)
    {
 
      aggiorna(i);
 
      printf("iterazione %d\n",i);
      i++;
    } 
  printf("exiting ...\n"); 
  return 0;
}
 
void aggiorna (int k) {
  a[k]=rand()%2;
  z[k+1]=a[k];
}

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..

fisica/informatica/201819/esercitazioni/esercitazionedeb.txt · Ultima modifica: 26/02/2019 alle 13:13 (5 anni fa) da Susanna Pelagatti