PurifyPlus - PurifyPlus
Původní autoři | Čistý software |
---|---|
Vývojáři | UNICOM Systems, divize společnosti UNICOM Global |
Stabilní uvolnění | 7.5 / 26. ledna 2017 |
Operační systém | Windows, Linux, Solaris, AIX |
Typ | Debugger paměti |
Licence | Proprietární software |
webová stránka | teamblue |
PurifyPlus je program pro ladění paměti, který používají vývojáři softwaru k detekci chyb přístupu k paměti v programech, zejména těch napsaných v jazyce C nebo C ++ . Původně byl napsán Reedem Hastingsem z Pure Software . Pure Software se později spojil s Atria Software a vytvořil Pure Atria Software, který na oplátku později získala společnost Rational Software , kterou zase získala společnost IBM , a poté se 31. prosince 2014 odprodala společnosti UNICOM Systems , Inc. Je funkčně podobná na jiné ladicí programy paměti, například Insure ++ , Valgrind a BoundsChecker .
Přehled
PurifyPlus umožňuje dynamické ověření, což je proces, při kterém program zjišťuje chyby, ke kterým dochází při spuštění programu, podobně jako debugger . Statická verifikace nebo statická analýza kódu naopak zahrnuje detekci chyb ve zdrojovém kódu, aniž byste jej museli kompilovat nebo spouštět, a to pouze objevováním logických nesrovnalostí. Typ kontroly pomocí C kompilátor je příkladem statické ověření.
Když je program propojen s PurifyPlus, opravený ověřovací kód je automaticky vložen do spustitelného souboru analýzou a přidáním do objektového kódu , včetně knihoven. Tímto způsobem, pokud dojde k chybě paměti, program vytiskne přesné umístění chyby, příslušnou adresu paměti a další relevantní informace. PurifyPlus také detekuje úniky paměti . Ve výchozím nastavení je zpráva o úniku generována při ukončení programu, ale lze ji také generovat voláním PurifyPlus API pro detekci úniku z instrumentované aplikace.
Chyby, které PurifyPlus zjistí, zahrnují čtení a zápis na hranici pole, pokus o přístup k nepřidělené paměti, uvolnění nealokované paměti (obvykle kvůli uvolnění stejné paměti podruhé) a také úniky paměti (přidělená paměť bez odkazu na ukazatel). Většina z těchto chyb není smrtelná (alespoň ne v místě chyby) a často je při pouhém spuštění programu nelze zjistit, kromě pozorování, že je něco špatně kvůli nesprávnému chování programu. PurifyPlus proto pomáhá tím, že tyto chyby detekuje a řekne programátorovi, kde přesně se vyskytují. Protože PurifyPlus funguje tak, že instrumentuje veškerý kód objektu , detekuje chyby, které se vyskytují uvnitř knihoven jiných výrobců nebo operačních systémů . Tyto chyby jsou často způsobeny tím, že programátor předává nesprávným argumentům volání knihoven, nebo nedorozuměním ohledně protokolů pro uvolnění datových struktur používaných knihovnami. Toto jsou často nejobtížnější chyby k nalezení a opravě.
Rozdíly od tradičních debuggerů
Schopnost detekovat nefatální chyby je hlavním rozdílem mezi PurifyPlus a podobnými programy od obvyklých debuggerů . Naproti tomu debuggery obecně umožňují programátorovi rychle najít zdroje závažných chyb, jako je například selhání programu kvůli dereferencingu nulového ukazatele , ale nepomáhají detekovat chyby bez fatální paměti. Ladicí programy jsou užitečné pro další věci, pro které PurifyPlus není určen, například pro procházení kódu po řádcích nebo ruční zkoumání paměti programu v konkrétním okamžiku spuštění. Jinými slovy, tyto nástroje se mohou navzájem doplňovat pro zkušeného vývojáře.
PurifyPlus také obsahuje další funkce, jako jsou vysoce výkonné hlídací body , které se obecně používají při používání ladicího programu na něčím kódu.
Stojí za zmínku, že používání PurifyPlus dává největší smysl v programovacích jazycích, které správu paměti nechávají na programátorovi. Proto například v jazycích Java , Lisp nebo Visual Basic automatická správa paměti snižuje výskyt jakýchkoli nevracení paměti . Tyto jazyky však mohou mít stále úniky; zbytečné odkazy na objekty zabrání opětovnému přidělení paměti. IBM má produkt s názvem Rational Application Developer k odhalování těchto druhů chyb.
Podporované platformy
Operační systém | Architektury procesorů | Verze operačního systému | Překladače |
---|---|---|---|
Solaris | |||
Sun UltraSPARC |
Základna Solaris 11 až 11.2 Základna Solaris 10 až U11 |
Sun C/C ++ 5,8 až 5,13 GNU gcc/g ++ 4,0 až 4,8 |
|
AMD64 Intel 64 |
Solaris 11 základna přes 11.2 Solaris 10 U6 až U11 |
Sun C/C ++ 5,8 až 5,10 GNU gcc/g ++ 4,0 až 4,8 |
|
Linux | |||
Intel IA-32 |
RHEL 6 (Server/Desktop) základna až 6,6 RHEL 5 (Server/Desktop) základna 5.11 SLES 11 základna SP3 |
GNU gcc/g ++ 4.0 až 5.2 Intel icc 11.0 až 11.1 |
|
AMD64 Intel 64 |
RHEL 6 (Server/Desktop) základna až 6,6 RHEL 5 (Server/Desktop) základna 5.11 SLES 11 základna SP3 |
GNU gcc/g ++ 4.0 až 5.2 Intel icc 11.0 až 11.1 |
|
AIX | |||
IBM POWER7 |
AIX 7.1 base through TL3 AIX 6.1 base through TL9 |
IBM XL C/C ++ 12.1 IBM XL C/C ++ 11.0 IBM XL C/C ++ 10.1 |
|
Okna | |||
IBM POWER6 | Základna AIX 6.1 až TL9 |
IBM XL C/C ++ 12.1 IBM XL C/C ++ 11.0 IBM XL C/C ++ 10.1 |
|
Okna | |||
Intel IA-32 Intel 64 AMD 64 |
Microsoft Windows 10 base, Anniversary Edition Microsoft Windows 8 base through 8.1 Microsoft Windows 7 base through SP1 Microsoft Windows Server 2016 Standard, Data Center Microsoft Windows Server 2012 Foundation, Essential, Standard, Data Center Microsoft Windows Server 2008 Enterprise, Standard, Data Center, base through SP2 Microsoft Windows Server 2008 R2 Foundation, Enterprise, Standard, Data Center, base through SP1 |
Visual Studio 2008 až 2015 |
Plošina | Typ sběru dat | Běhové prostředí |
---|---|---|
Okna | ||
Sběr dat C/C ++ (nespravovaný kód) | Microsoft Visual Studio 2008 až 2015 | |
Sběr dat o pokrytí kódu Java |
IBM JRE 5 až 8 SUN JRE 1,5 až 1,8 |
|
Sběr dat .NET (spravovaný kód) | .NET Framework 2.0 až 4.5 používaný s Microsoft Visual Studio 2008 až 2015 |