Valgrind: Porovnání verzí
Smazaný obsah Přidaný obsah
částečný revert, částečné upravení, odstranění některých zcela nesmyslných pasáží, chtělo by to ještě zkouknout - vypadá to na strojový překlad |
|||
Řádek 1:
'''Valgrind''' (výslovnost {{IPA2|ˈvælɡrɪnd}}, název je odvozen od jména hlavního vchodu do [[Valhalla|Valhally]] v [[Severská mytologie|severské mytologii]]) je [[svobodný software|svobodný]] program pod [[GNU General Public License|licencí GPL]] pro [[UN*X]]ové systémy, který pomáhá při [[ladění programů|ladění]] a [[profilování]] programů. Lze ho použít například při hledání [[únik paměti|úniků paměti]] a hledání [[souběh]]ů, nebo také při snaze monitorovat a zlepšit využití [[cache]].
==Přehled==
Valgrind je v podstatě [[virtuální stroj]] s použitím [[just-in-time]] (JIT) kompilační techniky, včetně [[dynamické rekompilace]]. Nic z původního programu nelze spustit přímo na procesoru počítače. Místo toho Valgrind nejprve přeloží program do dočasné, jednodušší formy tzv. Intermediate reprezentace (IR), která je procesorově neutrální, na základě formy [[SSA]].
Značné množství výkonu se ztrácí v těchto transformacích.
▲Značné množství výkonu se ztrácí v těchto transformacích (obvykle, kód nástroj); obvykle kódu běžícího s Valgrind a „žádným“ nástrojem (který nedělá nic pro IR) běží 4 - 5 krát pomaleji než normálně. Nicméně, způsob IR je mnohem vhodnější pro měření než originál, což usnadňuje psaní nástrojů a pro většinu projektů neznamená zpomalení při ladění tohoto postupu žádný velký problém.
==Nástroje==
Existuje více nástrojů obsažených
Kromě toho
▲Kromě toho, [[Memcheck]] nahradí standardní C alokovanou paměť jeho 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 Memcheck detekci [[off-by-one errors]]v případě, že program zapisuje mimo přidělené množství bloku. (Jiné přístupy k tomuto problému zahrnuje provádění vymezeného ukazatele v kompilátoru, které poskytují nižší šance nezjištěných chyb, zejména pokud jde o paměť, která je přidělena do fronty a ne hromadu, ale vyžaduje rekompilaci všech nástrojů binárního kódu.) Mezi problémy, které dokáže Memcheck detekovat a varovat před nimi patří následující:
* Čtení / zápis paměti poté, co byla uvolněna▼
▲* Použidí neinicializované paměti
▲* Čtení / zápis paměti poté co byla uvolněna
* Čtení / zápis z konce [[malloc]] bloků
* [[Úniky paměti]]
Cenou za to 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.
* Addrcheck, vzdálený bratranec od
* Helgrind a DRD, nástroje pro ladění [[souběh]]ů
* Cachegrind, profiler využití [[cache]] paměti (existuje [[grafické uživatelské rozhraní|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
▲Kromě Memcheck má Valgrind několik další nástrojů:
▲* Addrcheck, vzdálený bratranec od Memcheck, 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, [[heap]] [[profiler]]
▲* 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 budů
== Podporované platformy ==
Program pracuje v [[Linux]]u 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]].
Kromě významného výkonového omezení není Memcheck schopen zjistit meze chyb v použití statických a haldově alokovaných dat. Následující kód projde nástrojem Memcheck
▲==Omezení Memcheck==
▲Kromě významného výkonového omezení není Memcheck schopen zjistit meze chyb v použití statických a haldově alokovaných dat. Následující kód projde nástrojem Memcheck v Valgrind bez incidentů, i přes uvedené chyby:
<source lang="c">
int Static[5];
Řádek 54 ⟶ 46:
</source>
== Externí odkazy ==
* {{en}} [http://valgrind.org/
* [http://www.
[[Kategorie:Debuggery]]
[[da:Valgrind]]
[[de:Valgrind]]
[[es:Valgrind]]
[[fr:Valgrind]]
[[hu:Valgrind]]
[[it:Valgrind]]
[[ja:Valgrind]]
[[pl:Valgrind]]
[[pt:Valgrind]]
[[ru:Valgrind]]
[[zh:Valgrind]]
|