Valgrind
Valgrind on joukko ohjelmia debuggaukseen ja profilointiin.[2]
Valgrind | |
---|---|
Kehityshistoria | |
Vakaa versio | 3.23.0 ()[1] |
Tiedot | |
Lisenssi | GNU General Public License |
Aiheesta muualla | |
Verkkosivusto | |
Versiohallinta |
Valgrind integroituu ohjelmointiympäristöihin kuten Qt Creator ja Eclipse.[3][4]
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ä.[5]
Ohjelman nimi on peräisin skandinaavisesta mytologiasta.[6]
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ä.[7] Valgrindissä on modulaarinen rakenne ja perustuu JIT-kääntäjään (engl. just-in-time).[7]
Valgrind sisältää useita työkaluja:[8]
- 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”.[9] 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).[9] Ydin jättää eräitä asioita työkalun toteutukseen kuten miten ohjelmakoodia instrumentoidaan.[9]
Katso myös
Lähteet
Aiheesta muualla
- Using Valgrind to detect undefined value errors with bit-precision (englanniksi)
- The Design and Implementation of Valgrind (englanniksi)