Налагоджувач використання пам'яті — це налагоджувач, призначений для пошуку проблем із пам'яттю програмного забезпечення, таких як витоки пам'яті та переповнення буфера. Вони виникають через помилки, пов'язані з виділенням і звільненням динамічної пам'яті. Програми, написані мовами, що мають збирання сміття, наприклад керованим кодом, також можуть потребувати налагоджувачів пам'яті, наприклад для виявлення витоків пам'яті, спричинених «живими» посиланнями в колекціях.
Огляд Налагоджувачі пам'яті працюють шляхом моніторингу доступу до пам'яті, її виділення та звільнення. Багато налагоджувачів пам'яті вимагають повторної компіляції застосунків зі спеціальними бібліотеками динамічного виділення пам'яті, чиї API здебільшого сумісні зі звичайними бібліотеками динамічного виділення пам'яті, або ж використовують динамічне компонування. Electric Fence є таким налагоджувачем, який налагоджує виділення пам'яті за допомогою malloc. Деякі налагоджувачі пам'яті (наприклад, Valgrind) працюють шляхом запуску виконуваного файлу у середовищі, подібному до віртуальної машини, відстежуючи доступ до пам'яті, її виділення та звільнення, завдяки чому повторна компіляція зі спеціальними бібліотеками виділення пам'яті не потрібна.
Пошук проблем із пам'яттю, таких як витоки, може бути надзвичайно тривалим, оскільки вони можуть проявлятися лише за певних умов. Використання інструмента для виявлення неправильного використання пам'яті робить цей процес значно швидшим і простішим.
Оскільки аномально високе використання пам'яті може бути одним із чинників старіння програмного забезпечення, налагоджувачі пам'яті можуть допомогти програмістам уникати аномалій програмного забезпечення, які призводили б до вичерпання пам'яті комп'ютерної системи, тим самим забезпечуючи високу надійність програмного забезпечення навіть за тривалого часу виконання.
Порівняння зі статичним аналізатором Деякі інструменти статичного аналізу також можуть допомогти знаходити помилки пам'яті. Відладчики пам'яті працюють як частина застосунку під час його виконання, тоді як статичний аналіз коду здійснюється шляхом аналізу коду без його виконання. Ці різні методи зазвичай виявляють різні випадки проблем, і спільне використання обох дає найкращий результат.
Список інструментів налагодження пам'яті Це список інструментів, корисних для налагодження пам'яті. Профайлер можна використовувати разом із налагоджувачем пам'яті. NameOSLicenseLanguagesTechnique AddressSanitizer Linux, Mac OS Free/open source (LLVM) C, C++, Rust Compile-time instrumentation (available in Clang and GCC) and specialized library Allinea DDT Linux, Blue Gene commercial C, C++ and F90. Also for parallel programs on supercomputers Runtime - through dynamic linking AQtime Windows (Visual Studio, Embarcadero IDEs) commercial .NET, C++, Java, Silverlight, JScript, VBScript Runtime Bcheck Solaris BoundsChecker Windows (Visual Studio) commercial C++ Runtime intercepts or compile-time Daikon Unix, Windows, Mac OS X Free/open source Java, C/C++, Perl, and Eiffel Runtime dynamic invariant detection Debug_new (general technique) (general technique) C++ Compile-time override Deleaker Windows (standalone, and plugins for Visual Studio, RAD Studio, Qt Creator, CLion) commercial C++, .Net, Delphi Runtime intercepts dmalloc Free/open source (ISC License) C Compile-time override Android, Linux, Windows Free/open source (LGPL and BSD) Runtime intercepts Electric Fence Unix C, C++ Compile-time override FASTMM4 Windows Delphi Compile-time override IBM Rational Purify Unix, Windows commercial C++, Java, .NET Runtime Insure++ Windows (Visual Studio plugin), Unix commercial C, C++ source code instrumentation Intel Inspector Windows (Visual Studio), Linux commercial C, C++, Fortran Runtime libcwd Linux (gcc) Free/open source C, C++ Compile-time override libumem Solaris Bundled with Solaris Link-time override Memwatch (programming library) Free/open source C Compile-time override mtrace GNU C library Built-in, outputs accesses MTuner C, C++ Runtime intercepts, Link-time override (MSVC, Clang and GCC), Leak detection Oracle Solaris Studio (formerly Sun Studio Runtime Checking) Linux, Solaris Proprietary freeware C, C++, Fortran OLIVER (APT international) MVS, MVS/EXA, DOS/VSE software IBM Assembler Runtime intercepts, Hypervisor - Type 2 TotalView Unix, Mac OS X commercial C, C++, Fortran Runtime Linux, FreeBSD, Solaris/illumos, Mac OS, Android Runtime intercepts WinDbg Windows freeware C, C++, .NET, Python Runtime
Див. також Профілювання (програмування)
Примітки