Ladicí program paměti - Memory debugger

Paměti ladicí je ladicí pro nalezení softwarových problémů s pamětí, jako jsou úniky paměti a přetečení vyrovnávací paměti . Důvodem jsou chyby související s přidělováním a uvolňováním dynamické paměti . Programy napsané v jazycích, které mají uvolňování paměti , například spravovaný kód , mohou také potřebovat ladicí programy paměti, např. Kvůli nevracení paměti kvůli „živým“ referencím ve sbírkách.

Přehled

Ladicí programy paměti fungují tak, že monitorují přístup k paměti, přidělení a uvolňování paměti. Mnoho debuggerů paměti vyžaduje, aby byly aplikace překompilovány se speciálními knihovnami alokace dynamické paměti, jejichž API jsou většinou kompatibilní s konvenčními knihovnami alokace dynamické paměti, nebo jinak používají dynamické propojení. Electric Fence je takový debugger, který ladí alokaci paměti pomocí malloc . Některé ladicí programy paměti (např. Valgrind ) fungují spuštěním spustitelného souboru ve prostředí podobném virtuálnímu počítači, monitorováním přístupu k paměti, přidělením a opětovným přidělením, takže není nutná žádná překompilace se speciálními alokačními knihovnami paměti.

Hledání problémů s pamětí, jako jsou úniky, může být extrémně časově náročné, protože se nemusí projevovat jinak než za určitých podmínek. Použití nástroje k detekci zneužití paměti činí tento proces mnohem rychlejším a snadnějším.

Jelikož abnormálně vysoké využití paměti může být faktorem přispívajícím ke stárnutí softwaru , mohou ladicí programy paměti pomoci programátorům vyhnout se softwarovým anomáliím, které by vyčerpávaly paměť systému počítače, a tím zajistit vysokou spolehlivost softwaru i po dlouhou dobu běhu .

Srovnání se statickým analyzátorem

Některé nástroje pro statickou analýzu mohou také pomoci najít chyby paměti. Ladicí programy paměti fungují jako součást aplikace, zatímco je spuštěna, zatímco analýza statického kódu se provádí analýzou kódu bez jeho spuštění. Tyto různé techniky obvykle naleznou různé instance problémů a jejich společné použití přináší nejlepší výsledek.

Seznam nástrojů pro ladění paměti

Toto je seznam nástrojů užitečných pro ladění paměti. Ve spojení s ladicím programem paměti lze použít profiler .

název OS Licence Jazyky Technika
Sanitizer adresy Linux, Mac OS Volný/otevřený zdroj (LLVM) C, C ++. Kompilační instrumentace (k dispozici v Clang a GCC ) a specializovaná knihovna
Allinea DDT Linux, Blue Gene Proprietární komerční C, C ++ a F90. Také pro paralelní programy na superpočítačích Runtime - prostřednictvím dynamického propojení
AQtime Windows (Visual Studio, Embarcadero IDE) Proprietární komerční .NET, C ++, Java, Silverlight, JScript, VBScript Běh
Bcheck Solaris
BoundsChecker Windows (Visual Studio) Proprietární komerční C ++ Runtime zachycuje nebo kompilace
Daikon Unix, Windows, Mac OS X Zdarma/open source Java, C/C ++, Perl a Eiffel Runtime dynamická invariantní detekce
Debug_new (obecná technika) (obecná technika) C ++ Přepsání v čase kompilace
Deleaker Windows (samostatný a doplňky pro Visual Studio, RAD Studio, Qt Creator, CLion) Proprietární komerční C ++, .Net, Delphi Zachytávání za běhu
dmalloc Žádný Zdarma/open source C Přepsání v čase kompilace
DynamoRIO § Paměť Dr. Android, Linux, Windows Volný/otevřený zdroj (LGPL a BSD) Žádný Zachytávání za běhu
Elektrický plot Unix Free/open source (GPL) C, C ++ Přepsání v čase kompilace
FASTMM4 Okna Free/open source (GPL) Delphi Přepsání v čase kompilace
IBM Rational Purify Unix, Windows Proprietární komerční C ++, Java, .NET Běh
Pojistit ++ Windows (plugin Visual Studio), Unix Proprietární komerční C, C ++ instrumentace zdrojového kódu
Intel Inspector Windows (Visual Studio), Linux Proprietární komerční C, C ++, Fortran Běh
libcwd Linux (gcc) Zdarma/open source C, C ++ Přepsání v čase kompilace
libumem Solaris Součástí balení je Solaris Přepsání času spojení
Memwatch Any (programovací knihovna) Zdarma/open source C Přepsání v čase kompilace
mtrace Rozličný Zdarma/otevřený zdroj (LGPL) GNU C knihovna Integrované výstupy
MTuner Rozličný Volný, uvolnit C, C ++ Zachytávání za běhu, přepsání doby spoje (MSVC, Clang a GCC), detekce úniku
Oracle Solaris Studio (dříve Sun Studio Runtime Checking) Linux, Solaris Patentovaný freeware C, C ++, Fortran
OLIVER (APT international) MVS, MVS/EXA, DOS/VSE Proprietární software IBM Assembler Zachytávání za běhu, Hypervisor - Typ 2
TotalView Unix, Mac OS X Proprietární komerční C, C ++, Fortran Běh
Valgrind § Memcheck Linux, Mac OS, Android Free/open source (GPL) Žádný Zachytávání za běhu
WinDbg Okna Patentovaný freeware C, C ++, .NET, Python Běh

Viz také

Reference

  • Michael C. Daconta: Ukazatele C ++ a správa dynamické paměti , John Wiley & Sons, ISBN  0-471-04998-0
  • Andrew Koenig : C Traps and Pitfalls , Addison-Wesley, ISBN  0-201-17928-8

externí odkazy