Ladicí program paměti - Memory debugger
| Spuštění programu |
|---|
| Obecné pojmy |
| Typy kódu |
| Kompilační strategie |
| Pozoruhodné doby běhu |
|
| Pozoruhodné kompilátory a řetězce nástrojů |
|
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é
- 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 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
- „ Lovecké chyby paměti “ od Ivana Skytte Jørgensena
- „ Porovnání bezplatné kontroly paměti “ od Jean-Philippe Martina