Valgrind – Breve introduzione

My project's page

Valgrind – Breve introduzione

15 marzo 2017 Tools di programmazione 0

http://valgrind.org/ original logo

Ciao a tutti, in questo post daremo uno sguardo veloce a Valgrind per capire cosa è e a cosa serve. Nei prossimi articoli analizzeremo nel dettaglio i diversi tools e vedremo come utilizzarli al meglio.

Valgrind è uno strumento multiuso, un coltellino svizzero dei programmatori.
Questo ci aiuta nei casi più disparati: dal profiling al debugging della memoria per Linux. Inizialmente era disponibile per x86, dalla versione 3 lo è anche per AMD64 ed altre architetture. Valgrind ci permette di eseguire il nostro programma nel suo ambiente che controlla l’utilizzo della memoria, come ad esempio le chiamate a malloc o free (o new e delete nel caso di C++). Se si scrive fuori la fine di un array, ci si dimentica di liberare un puntatore o altri errori o sviste di questo tipo, Valgrind è in grado di rilevarlo. Dal momento che questi sono problemi abbastanza comuni, vedremo come utilizzare Valgrind per trovare questi tipi di problemi di memoria, anche se Valgrind è uno strumento molto più potente e che può fare molto di più.

Il comando per lanciare Valgrind è:

nome_tool è il nome dello strumento da usare e program_path è il percorso del programma da lanciare con Valgrind.
I tools più conosciuti ed utilizzati sono:

  • Memcheck
  • Addrcheck
  • Massif
  • Cachegrind
  • Callgrind
  • Helgrind

Memcheck è un rilevatore di errori in memoria. Aiuta ai programmatori a scrivere programmi (specialmente in  C e C ++) consistenti e senza problemi in memoria.

Addrcheck è una versione semplificata ed alleggerita di Memcheck. È identico a MemCheck in tutto e per tutto, ad eccezione di un dettaglio importante: non fa controlli sugli Undefined values. Questo significa che Addrcheck è più veloce di Memcheck ed utilizza meno risorse (in termini di memoria e processore).

Massif  è un profiler dell’heap. Ci permette di analizzare lo stato dello heap e ci permette quindi di scrivere programmi che utilizzano meno memoria.

Cachegrind è un profile che si occupa principalmente della cache e della predizione delle diramazioni. Ci aiuta a creare programmi più veloci e performanti.

Callgrind invece è uno strumento di profiling mantiene uno storico delle chiamate tra le funzioni in esecuzione in un programma, una sorta di grafo delle chiamate.

Helgrind è un rivelatore di errori nei thread. Ci aiuta a fare i programmi multi-threaded più corretto.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *