Отладчик памяти

редактировать
Выполнение программы
Общие понятия
Типы кода
Стратегии компиляции
Заметное время выполнения
Известные компиляторы и инструментальные средства

Отладчик памяти является отладчик для поиска проблем с программным обеспечением памяти, таких как утечки памяти и переполнения буфера. Это связано с ошибками, связанными с выделением и освобождением динамической памяти. Программы, написанные на языках со сборкой мусора, таких как управляемый код, также могут нуждаться в отладчиках памяти, например, для утечек памяти из-за «живых» ссылок в коллекциях.

СОДЕРЖАНИЕ
  • 1 Обзор
  • 2 Сравнение со статическим анализатором
  • 3 Список средств отладки памяти
  • 4 См. Также
  • 5 ссылки
  • 6 Внешние ссылки
Обзор

Отладчики памяти работают, отслеживая доступ к памяти, выделение и освобождение памяти. Многие отладчики памяти требуют перекомпиляции приложений со специальными библиотеками распределения динамической памяти, 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 Время выполнения
Смотрите также
использованная литература
  • Майкл С. Даконта: указатели C ++ и динамическое управление памятью, John Wiley amp; Sons, ISBN   0-471-04998-0
  • Эндрю Кениг : C ловушки и ловушки, Эддисон-Уэсли, ISBN   0-201-17928-8
внешние ссылки
Последняя правка сделана 2024-01-02 06:55:08
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте