Author Topic: Valgrind - Breve introduzione  (Read 927 times)

Offline CrashTest

Valgrind - Breve introduzione
« on: March 15, 2017, 07:23:33 PM »
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 è:

Code: You are not allowed to view links. Register or Login
$ valgrind --tool=nome_tool program_pathnome_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.

Nel prossimo post vedremo come usare Memcheck e Addrcheck, nel frattempo vi saluto e vi invito segnalare eventuali errori.
Saluti, CrashTest

Fonte: You are not allowed to view links. Register or Login
« Last Edit: March 16, 2017, 12:21:59 PM by CrashTest »
Email: [email protected]
Website: You are not allowed to view links. Register or Login
 
The following users thanked this post: davenull, lynx

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40