Valgrind

Valgrind
VývojářJulian Seward
Aktuální verze3.23.0 (26. dubna 2024)
Operační systémGNU/Linux
macOS
Solaris
Android
Vyvíjeno vC
Typ softwaruprogramátorský nástroj, memory debugger a svobodný software
LicenceGNU General Public License
Webwww.valgrind.org
Některá data mohou pocházet z datové položky.

Valgrind (výslovnost [ˈvælɡrɪnd]IPA) je v informatice program pro unixové systémy, který pomáhá při ladění a profilování programů. Lze ho použít například při hledání úniků paměti, hledání souběhů, nebo také při snaze monitorovat a zlepšit využití cache. Valgrind je open source software šířený pod licencí GPL. Název je odvozen od jména hlavního vchodu do Valhally v severské mytologii.

Přehled

Valgrind je v podstatě virtuální stroj používající JIT (Just-In-Time) techniky, včetně dynamické rekompilace. Při použití Valgrindu se původní program nespouští přímo na procesoru počítače, ale je Valgrindem přeložen do dočasné, jednodušší formy tzv. Intermediate reprezentace (IR), která je procesorově neutrální, na základě formy SSA.[zdroj⁠?] Valgrind překompiluje binární kód běžící na hostitelském a cílovém (nebo simulovaném) procesoru stejné architektury.

V těchto transformacích se ztrácí značné množství výkonu. Kód běžící s Valgrindem běží 4–5krát pomaleji proti normálnímu spuštění. Uložení ve formě IR (místo strojového kódu) je však vhodnější pro měření. Usnadňuje psaní nástrojů a pro většinu projektů neznamená zpomalení při ladění velký problém.

Nástroje

Existuje více nástrojů obsažených ve Valgrindu. Výchozí (a nejčastěji používaný) je nástroj Memcheck. Memcheck vloží navíc zvláštní kódy okolo téměř všech příkazů, které udržují informaci o platnosti (veškerá nevyužitá paměť začíná jako neplatná nebo nedefinovaná, dokud není inicializována do deterministického stavu, případně z jiných pamětí) a adresovatelnosti (zda adresy bodů v paměti jsou přiděleny, neuvolněnému paměťovému bloku), uložené do takzvaných V-bitů a A-bitů. Manipuluje se s nimi jako s daty a strojový kód udržuje A- a V-bity, takže jsou správně na úrovni jednoho bitu.

Kromě toho Memcheck nahradí standardní alokátor paměti jazyka C svou vlastní implementací, která zahrnuje také hlídání paměti kolem přidělených bloků (s A bity nastavenými na neplatné). Ta funkce umožňuje Memchecku detekci off-by-one chyb v případě, že program zapisuje mimo přidělené množství bloku. Mezi problémy, které dokáže Memcheck detekovat a varovat před nimi patří následující:

  • použití neinicializované paměti
  • čtení nebo zápis paměti poté, co byla uvolněna
  • čtení nebo zápis z konce malloc bloků
  • únik paměti

Cenou za výše uvedené možnosti je ztráta výkonu. Programy běžící pod Memcheckem obvykle běží pětkrát až dvacetkrát pomaleji než mimo Valgrind a používají mnohem více paměti.

Kromě Memchecku má Valgrind několik dalších nástrojů:

  • Addrcheck – vzdálený bratranec od Memchecku, běží mnohem rychleji a nevyžaduje tolik paměti, ale zachytává méně chyb. Tento nástroj byl odstraněn od verze 3.2.0.
  • Massif – profiler haldy
  • Helgrind a DRD – nástroje pro ladění souběhů
  • Cachegrind – profiler využití cache paměti (existuje grafické rozhraní KCachegrind)
  • exp-ptrcheck – experimentální nástroj pro hledání podobných chyb jako Memcheck, ale s odlišným přístupem, která je schopen zjistit i několik dalších typů chyb

Podporované platformy

Program pracuje v Linuxu na platformách x86, x86-64 a PowerPC. Ve verzi 3.5.0 je plánována podpora Mac OS X. Neoficiální verze byly zprovozněny i pod FreeBSD a NetBSD.

Omezení Memchecku

Kromě významného výkonového omezení není Memcheck schopen zjistit chyby mezí při použití dat alokovaných staticky nebo na zásobníku [1]. Následující kód projde nástrojem Memcheck ve Valgrindu bez incidentů, i přes uvedené chyby:

int Static[5];

int func(void)
{
  int Stack[5];

  Static[5] = 0;  /* chyba - existuje Static[0] až Static[4], avšak Static[5] je mimo možné meze */
  Stack [5] = 0;  /* chyba - existuje Stack[0] až  Stack[4], avšak Stack[5] je mimo možné meze */

  return 0;
}

Reference

Externí odkazy


Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/Valgrind
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.