Выполнение программы |
---|
Общие понятия |
Типы кода |
Стратегии компиляции |
Заметное время выполнения |
|
Известные компиляторы и инструментальные средства |
|
|
Отладчик памяти является отладчик для поиска проблем с программным обеспечением памяти, таких как утечки памяти и переполнения буфера. Это связано с ошибками, связанными с выделением и освобождением динамической памяти. Программы, написанные на языках со сборкой мусора, таких как управляемый код, также могут нуждаться в отладчиках памяти, например, для утечек памяти из-за «живых» ссылок в коллекциях.
Отладчики памяти работают, отслеживая доступ к памяти, выделение и освобождение памяти. Многие отладчики памяти требуют перекомпиляции приложений со специальными библиотеками распределения динамической памяти, API-интерфейсы которых в основном совместимы с обычными библиотеками распределения динамической памяти, или же используют динамическое связывание. Electric Fence - это такой отладчик, который отлаживает выделение памяти с помощью malloc. Некоторые отладчики памяти (например, Valgrind ) работают, выполняя исполняемый файл в среде, подобной виртуальной машине, отслеживая доступ к памяти, выделение и освобождение памяти, поэтому перекомпиляция с использованием специальных библиотек распределения памяти не требуется.
Выявление проблем с памятью, таких как утечки, может занять очень много времени, поскольку они могут проявляться только при определенных условиях. Использование инструмента для обнаружения неправильного использования памяти делает процесс намного быстрее и проще.
Поскольку аномально высокий уровень использования памяти может быть фактором старения программного обеспечения, отладчики памяти могут помочь программистам избежать аномалий программного обеспечения, которые могут истощить память компьютерной системы, обеспечивая тем самым высокую надежность программного обеспечения даже в течение длительного времени работы.
Некоторые инструменты статического анализа также могут помочь найти ошибки памяти. Отладчики памяти работают как часть приложения во время его работы, в то время как статический анализ кода выполняется путем анализа кода без его выполнения. Эти разные методы обычно позволяют найти разные примеры проблем, и их совместное использование дает наилучший результат.
Это список инструментов, полезных для отладки памяти. Профилировщика может быть использован в сочетании с отладчиком памяти.
Имя | Операционные системы | Лицензия | Языки | Техника |
---|---|---|---|---|
AddressSanitizer | Linux, Mac OS | Свободный / открытый исходный код (LLVM) | C, C ++. | Инструментарий времени компиляции (доступен в Clang и GCC ) и специализированная библиотека |
Аллинея ДДТ | Linux, Blue Gene | Собственная реклама | C, C ++ и F90. Также для параллельных программ на суперкомпьютерах | Время выполнения - через динамическое связывание |
AQtime | Windows (Visual Studio, IDE Embarcadero) | Собственная реклама | .NET, C ++, Java, Silverlight, JScript, VBScript | Время выполнения |
Bcheck | Солярис | |||
BoundsChecker | Windows (Visual Studio) | Собственная реклама | C ++ | Перехваты во время выполнения или во время компиляции |
Дайкон | Unix, Windows, Mac OS X | Бесплатно / с открытым исходным кодом | Java, C / C ++, Perl и Eiffel | Обнаружение динамических инвариантов во время выполнения |
Debug_new | (общая техника) | (общая техника) | C ++ | Переопределение во время компиляции |
Deleaker | Windows (автономная версия и плагины для Visual Studio, RAD Studio, Qt Creator, CLion) | Собственная реклама | C ++,.Net, Delphi | Перехваты во время выполнения |
дмаллок | Любой | Бесплатно / с открытым исходным кодом | C | Переопределение во время компиляции |
DynamoRIO § Доктор Память | Android, Linux, Windows | Свободный / открытый исходный код (LGPL и BSD) | Любой | Перехваты во время выполнения |
Забор под напряжением | Unix | Свободный / открытый исходный код (GPL) | C, C ++ | Переопределение во время компиляции |
FASTMM4 | Окна | Свободный / открытый исходный код (GPL) | Delphi | Переопределение во время компиляции |
IBM Rational Purify | Unix, Windows | Собственная реклама | C ++, Java,.NET | Время выполнения |
Страхование ++ | Windows (плагин Visual Studio), Unix | Собственная реклама | C, C ++ | инструментарий исходного кода |
Инспектор Intel | Windows (Visual Studio), Linux | Собственная реклама | C, C ++, Фортран | Время выполнения |
libcwd | Linux (gcc) | Бесплатно / с открытым исходным кодом | C, C ++ | Переопределение во время компиляции |
libumem | Солярис | В комплекте с Solaris | Переопределение времени компоновки | |
Memwatch | Любой (библиотека программирования) | Бесплатно / с открытым исходным кодом | C | Переопределение во время компиляции |
mtrace | Различный | Бесплатно / с открытым исходным кодом (LGPL) | Библиотека GNU C | Встроенный, выходы, доступы |
MTuner | Различный | Бесплатно | C, C ++ | Перехваты во время выполнения, переопределение времени соединения (MSVC, Clang и GCC), обнаружение утечек |
Oracle Solaris Studio (ранее Sun Studio Runtime Checking) | Linux, Solaris | Проприетарное бесплатное ПО | C, C ++, Фортран | |
ОЛИВЕР (APT международный) | MVS, MVS / EXA, DOS / VSE | Проприетарное программное обеспечение | Ассемблер IBM | Перехваты во время выполнения, гипервизор - Тип 2 |
TotalView | Unix, Mac OS X | Собственная реклама | C, C ++, Фортран | Время выполнения |
Valgrind § Memcheck | Linux, Mac OS, Android | Свободный / открытый исходный код (GPL) | Любой | Перехваты во время выполнения |
WinDbg | Окна | Проприетарное бесплатное ПО | C, C ++,.NET, Python | Время выполнения |