Muokataan sivua Valgrind
Siirry navigaatioon
Siirry hakuun
Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.
Nykyinen versio | Oma tekstisi | ||
Rivi 1: | Rivi 1: | ||
{{Ohjelma | {{ Ohjelma | nimi=valgrind | kuva= | kuvateksti= | lisenssi=[[GPL]]| käyttöliittymä=teksti | kotisivu=[http://valgrind.org valgrind.org] }} | ||
| nimi= | Valgrind on helppokäyttöinen ja hyödyllinen muistidebuggaus- ja profilointityökalu linuxille, joka tukee x86, AMD64, ppc ja ppc64 -prosessorityyppejä. | ||
| kuva= | |||
| kuvateksti= | |||
| lisenssi=[[GPL]] | |||
| käyttöliittymä=teksti | |||
| kotisivu=[http://valgrind.org valgrind.org] | |||
}} | |||
== Käyttö == | == Käyttö == | ||
Rivi 18: | Rivi 7: | ||
valgrind ./ohjelma | valgrind ./ohjelma | ||
Tämän jälkeen | Tämän jälkeen valgrind tulostaa, oletuksena standarditulostusvirtaan, mm. hyödyllistä tietoa ohjelman muistinkäytön puutteista, jos niitä on. | ||
===Työkalut=== | ===Työkalut=== | ||
Mikäli haluat käyttää jotain muuta työkalua kuin memcheck, käytä valitsinta | Mikäli haluat käyttää jotain muuta työkalua kuin memcheck, käytä valitsinta --tool=<työkalu>. | ||
Valittavana on seuraavat työkalut: | Valittavana on seuraavat työkalut: | ||
* | *Memcheck, erinomainen työkalu muistinhallinnan virheiden löytämiseen. | ||
* | |||
* | *Cachegrind, työkalu, joka kertoo kuinka hyvin ohjelmasi hyödyntää prosessorivälimuistia. | ||
* | |||
* | *Callgrind, työkalu, joka antaa kehittäjälle olennaista tietoa ohjelman eri osien käyttämistä prosessoriresursseista | ||
*Massif, työkalu ohjelman dynaamisesti varattavan muistin käytön profilointiin | |||
*Helgrind, | |||
== Tulosteen tulkinta == | == Tulosteen tulkinta == | ||
Rivi 36: | Rivi 29: | ||
Valgrindin tulostamien rivien alussaoleva ==[[PID]]== kertoo senhetkisen ajettavan prosessin prosessitunnuksen. | Valgrindin tulostamien rivien alussaoleva ==[[PID]]== kertoo senhetkisen ajettavan prosessin prosessitunnuksen. | ||
Ohjelman oma tuloste taas tulostuu sellaisenaan ilman tätä merkintää. | Ohjelman oma tuloste taas tulostuu sellaisenaan ilman tätä merkintää. | ||
===tool=memcheck=== | ===tool=memcheck=== | ||
Rivi 43: | Rivi 37: | ||
Merkinnän jälkeen tulostuu kutsupino, joka kertoo, missä virhe tapahtuu. Esimerkiksi: | Merkinnän jälkeen tulostuu kutsupino, joka kertoo, missä virhe tapahtuu. Esimerkiksi: | ||
==12393== at 0x80483FA: main (testi.c:7) | ==12393== at 0x80483FA: main (testi.c:7) | ||
kertoo, että virhe tapahtuu suoritettavan ohjelman kohdassa 0x80483FA, funktiossa | kertoo, että virhe tapahtuu suoritettavan ohjelman kohdassa 0x80483FA, funktiossa main(), lähdekooditiedostossa testi.c ja rivillä 7. | ||
==16340== Address 0x416702D is 1 bytes after a block of size 4 alloc'd | ==16340== Address 0x416702D is 1 bytes after a block of size 4 alloc'd | ||
Rivi 52: | Rivi 46: | ||
==18096== Conditional jump or move depends on uninitialised value(s) | ==18096== Conditional jump or move depends on uninitialised value(s) | ||
Tämä virhe syntyy, kun koodissa on käytetty if | Tämä virhe syntyy, kun koodissa on käytetty if, for tai while -ohjauslausekkeiden ehtona muuttujaa, jonka muistialue on alustamaton tai jonka muistialueen sisältö ei ole määräytynyt täsmällisesti ohjelman ajon aikana. | ||
Tässä vikana voi olla esimerkiksi unohtunut | Tässä vikana voi olla esimerkiksi unohtunut = NULL -sijoitus olemattomalle oliolle, kun olion ja NULL:n vertailua käytetään ehtona olion käsittelylle. Kannattaa kuitenkin välttää logiikkavirheiden peittämistä mielivaltaisella alustamisella! | ||
===Yhteenveto ohjelman muistinkäytöstä=== | ===Yhteenveto ohjelman muistinkäytöstä=== | ||
Rivi 65: | Rivi 59: | ||
==8843== checked 53,100 bytes. | ==8843== checked 53,100 bytes. | ||
Käyttämällä valitsinta | |||
Käyttämällä valitsinta --leak-check=full saadaan tietoa menetetystä muistista: | |||
==8843== 4 bytes in 1 blocks are definitely lost in loss record 1 of 1 | ==8843== 4 bytes in 1 blocks are definitely lost in loss record 1 of 1 | ||
Rivi 92: | Rivi 87: | ||
== Aiheesta muualla == | == Aiheesta muualla == | ||
*[http://jumi.lut.fi/~paalanen/htyot/valgrind.html Valgrind - muistidebuggeri] -opas | *[http://jumi.lut.fi/~paalanen/htyot/valgrind.html Valgrind - muistidebuggeri] -opas | ||
== Katso myös == | == Katso myös == | ||
*[[Gdb]] | *[[Gdb]] | ||
[[Luokka:Kehitystyökalut]] | [[Luokka:Kehitystyökalut]] |