Valgrind

Valgrind on joukko ohjelmia debuggaukseen ja profilointiin.

Valgrind integroituu ohjelmointiympäristöihin kuten Qt Creator ja Eclipse.

Valgrind tukee muun muassa Android, Linux, Solaris ja Darwin (Mac OS X 10.12) -alustoja ARM, AMD64, Power, MIPS, S/390 ja x86-suorittimilla.

Historia 
Ohjelman kehittäjä Julian Seward sai avoimen lähdekoodin palkinnon vuonna 2006 kehitystyöstä.

Ohjelman nimi on peräisin skandinaavisesta mytologiasta.

Ratkaisu ja ominaisuudet 

Valgrind toimii ohjelmabinäärillä, jolloin lähdekoodia ei tarvita (esimerkiksi suljetun kirjaston linkityksen kanssa) ja ei tarvitse ohjelman uudelleen kääntämistä. Valgrindissä on modulaarinen rakenne ja perustuu JIT-kääntäjään ().

Valgrind sisältää useita työkaluja:
 Memcheck: muistikäsittelyn ongelmat kuten muistivuodot, kaksinkertaiset vapautukset, varaamattoman muistin ja ylivuotojen tarkistukset
 Cachegrind: välimuistin käytön profilointi
 Callgrind: laajennus Cachegrindiin
 Massif: heap-muistin debuggaamiseen
 Helgrind: säikeistyksen debuggaamiseen

Rakenne 
Valgrindin arkkitehtuuri jakaantuu kahteen osaan: ”ytimeen” ja ”työkaluihin”. Ytimessä on yhteisiä toimintoja ohjelman instrumentointia varten mukaan lukien JIT-kääntäjän, alemman tason muistikäsittelijän, signaalikäsittelijän ja vuorontajan (säikeitä varten). Ydin jättää eräitä asioita työkalun toteutukseen kuten miten ohjelmakoodia instrumentoidaan.

Katso myös 
 Dynaaminen analyysi

Lähteet

Aiheesta muualla 
 Using Valgrind to detect undefined value errors with bit-precision 
 The Design and Implementation of Valgrind 

Debuggerit
Profilointityökalut
Linux-ohjelmat