Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio:esercitazioni:esercitazione2

Questa è una vecchia versione del documento!


Esercitazione 2

Dove si sperimanta qualche tool e si approfondiscono alcune caratteristiche del C sequenziale: errno, perror …

Esercizio 1: mtrace

Verificare gli accessi in memoria compiuti dalle funzioni su liste di interi della libreria libList.a utilizzando la funzione mtrace e l'utility mtrace, questi strumenti tracciano le azioni di allocazione e deallocazione di memoria compiute dal programma per verificare la presenza di memory leak cioe' memoria non deallocata.

Per fare questo procedere come segue:

  • leggere le informazioni in man 3 mtrace
  • inserire la chiamata alla funzione di libreria mtrace() all'inizio della parte del programma C che vogliamo verificare
  • inserire la chiamata alla funzione di libreria unmtrace() alla fine della parte del programma C che vogliamo verificare
  • compilare il file da verificare con opzione -g per includere le informazioni di debugging. Ad esempio se il mio file si chiama main.c posso compilare con
bash$ gcc -Wall -pedantic -g -o prova main.c
  • settare la variabile di ambiente MALLOC_TRACE al path del file in cui vogliamo che la mtrace() registri le informazioni sugli accessi di memoria. Ad esempio se voglio registrare le informazioni nel file ./mtrace.out devo usare il comando
bash$ export MALLOC_TRACE=./mtrace.out
  • eseguire, nel nostro esempio con:
bash$ ./prova
  • dopo l'esecuzione nel file ./mtrace.out sono registrati gli accessi in formato testuale non facilmente comprensibile. Interpretarlo con l'utility mtrace. Ad esempio sempre riferendosi al nostro esempio invocare
bash$ mtrace ./prova ./mtrace.out 

questo rispondera' No memory leaks se tutta la memoria e' stata deallocata o fornira' indicazioni su dove e' stata allocata la mamoria rimasta da deallocare.

Esercizio 2: verificare gli accessi in memoria: valgrind

informatica/sol/laboratorio/esercitazioni/esercitazione2.1267630239.txt.gz · Ultima modifica: 03/03/2010 alle 15:30 (16 anni fa) da Susanna Pelagatti

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki