Debugger paměti - Memory debugger
![]() | tento článek potřebuje další citace pro ověření.Prosinec 2011) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Provádění programu |
---|
Obecné pojmy |
Druhy kódu |
Strategie kompilace |
Pozoruhodné doby běhu |
Pozoruhodné překladače a řetězce nástrojů |
A debugger paměti je debugger pro hledání problémů se softwarovou pamětí jako úniky paměti a přetečení vyrovnávací paměti. Ty jsou kvůli hmyz související s přidělováním a uvolňováním dynamická paměť. Programy psané v jazycích, které mají odvoz odpadu, jako spravovaný kód, může také potřebovat ladicí programy paměti, např. pro úniky paměti v důsledku „živých“ odkazů ve sbírkách.
Přehled
Debuggery paměti fungují sledováním přístupu do paměti, alokace a uvolnění paměti. Mnoho debuggerů paměti vyžaduje, aby byly aplikace překompilovány speciálními knihovnami přidělení dynamické paměti, jejichž API jsou většinou kompatibilní s konvenčními knihovnami přidělení dynamické paměti, nebo jinak používají dynamické propojení. Elektrický plot je takový debugger, který ladí přidělení paměti pomocí malloc. Některé ladicí programy paměti (např. Valgrind ) pracujte spuštěním spustitelného souboru v prostředí podobném virtuálnímu počítači, sledováním přístupu do paměti, alokací a deallocation, takže není nutná žádná rekompilace se speciálními knihovnami pro alokaci paměti.
Nalezení problémů s pamětí, jako jsou netěsnosti, může být extrémně časově náročné, protože se za určitých podmínek nemusí projevit. Použití nástroje k detekci zneužití paměti činí proces mnohem rychlejší a jednodušší.[1]
Protože abnormálně vysoké využití paměti může být přispívajícím faktorem stárnutí softwaru, debuggery paměti mohou programátorům pomoci vyhnout se softwarové anomálie tím by se vyčerpala paměť systému počítače, a tím by se zajistila vysoká spolehlivost softwaru i na dlouho runtime.
Srovnání se statickým analyzátorem
Nějaký nástroje statické analýzy může také pomoci najít chyby paměti. Debuggery paměti fungují jako součást aplikace, zatímco je běh zatímco statická analýza kódu se provádí analýzou kódu bez jeho provádění. Tyto různé techniky obvykle naleznou různé případy problémů a jejich použití společně přináší nejlepší výsledek.[2]
Seznam nástrojů pro ladění paměti
Toto je seznam nástroje užitečné pro ladění paměti. A profiler lze použít ve spojení s debuggerem paměti.
název | OS | Licence | Jazyky | Technika |
---|---|---|---|---|
AddressSanitizer | Linux, Mac OS | Zdarma / otevřený zdroj (LLVM) | C, C ++. | Přístrojové vybavení v době kompilace (k dispozici v Zvonit a GCC ) a specializovaná knihovna |
Allinea DDT | Linux, Blue Gene | Proprietární reklama | 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í reklama | .NET, C ++, Java, Silverlight, JScript, VBScript[3] | Runtime |
Bcheck | Solaris | |||
BoundsChecker | Windows (Visual Studio) | Proprietární reklama | C ++ | Zachycení za běhu nebo kompilace |
Daikon | Unix, Windows, Mac OS X[4] | Zdarma / otevřený zdroj[5] | Java, C / C ++, Perl a Eiffel[4] | Detekce dynamického invariantu za běhu |
Debug_new | (obecná technika) | (obecná technika) | C ++ | Přepsání v době kompilace |
Deleaker | Windows (samostatný a pluginy pro Visual Studio, RAD Studio, Qt Creator, CLion) | Proprietární reklama | C ++, .Net, Delphi | Zachycení za běhu |
dmalloc | Žádný | Zdarma / otevřený zdroj | C | Přepsání v době kompilace |
DynamoRIO § Dr. Paměť | Android, Linux, Windows | Free / open source (LGPL a BSD) | Žádný | Zachycení za běhu |
Elektrický plot | Unix | Free / open source (GPL) | C, C ++ | Přepsání v době kompilace |
FASTMM4 | Okna | Free / open source (GPL) | Delphi | Přepsání v době kompilace |
IBM Rational Purify | Unix, Windows | Proprietární reklama | C ++, Java, .NET | Runtime |
Pojistit ++ | Windows (plugin Visual Studio), Unix | Proprietární reklama | C, C ++ | vybavení zdrojového kódu |
Inspektor Intel | Windows (Visual Studio) | Proprietární reklama | C, C ++ | |
libcwd | Linux (gcc) | Zdarma / otevřený zdroj | C, C ++ | Přepsání v době kompilace |
libumem | Solaris | Balíček se systémem Solaris | Přepsání času odkazu | |
Memwatch | Libovolná (programovací knihovna) | Zdarma / otevřený zdroj | C | Přepsání v době kompilace |
mtrace | Rozličný | Zdarma / otevřený zdroj (LGPL) | Knihovna GNU C. | Integrovaný, přístup k výstupům |
MTuner | Rozličný | Volný, uvolnit | C, C ++ | Runtime intercepts, Link-time override (MSVC, Clang a GCC), detekce úniku |
Studio Oracle Solaris (dříve Sun Studio Runtime Checking) | Linux, Solaris | Proprietární freeware | C, C ++, Fortran | |
OLIVER (APT mezinárodní) | MVS, MVS / EXA, DOS / VSE | Proprietární software | IBM Assembler | Zachycení za běhu, Hypervisor - Typ 2 |
TotalView | Unix, Mac OS X | Proprietární reklama | C, C ++, Fortran | Runtime |
Valgrind § Memcheck | Linux, Mac OS, Android | Free / open source (GPL) | Žádný | Zachycení za běhu |
WinDbg | Okna | Proprietární freeware | C, C ++, .NET, Python | Runtime |
Viz také
- Profilování (počítačové programování)
- Seznam nástrojů pro analýzu výkonu
- Debugger
- Detekce chyb za běhu
- Testování softwaru
- Softwarové inženýrství
- Programování
- Skládka jádra
Reference
- Michael C. Daconta: Ukazatele C ++ a dynamická správa pamětiJohn Wiley & Sons, ISBN 0-471-04998-0
- Andrew Koenig: C pasti a úskalí, Addison-Wesley, ISBN 0-201-17928-8
- ^ "Recenze: 5 debuggerů paměti pro kódování Linuxu". Citováno 24. srpna 2017.
- ^ „Dynamická analýza vs. statická analýza“. Citováno 24. srpna 2017.
- ^ „Archivovaná kopie“. Archivovány od originál dne 19. 9. 2013. Citováno 2013-01-14.CS1 maint: archivovaná kopie jako titul (odkaz)
- ^ A b http://groups.csail.mit.edu/pag/daikon/download/doc/daikon.html
- ^ http://groups.csail.mit.edu/pag/daikon/download/doc/daikon.html#License
externí odkazy
- "Chyby v lovecké paměti „Ivan Skytte Jørgensen
- "Porovnání bezplatných kontrolérů paměti „Jean-Philippe Martin[úplná citace nutná ]