Jump to content

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

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

Обзор [ править ]

Отладчики памяти работают, отслеживая доступ к памяти, ее выделение и освобождение. Многие отладчики памяти требуют, чтобы приложения были перекомпилированы с использованием специальных библиотек динамического выделения памяти, API-интерфейсы которых в основном совместимы с обычными библиотеками динамического выделения памяти, или же используют динамическое связывание. Electric Fence — это такой отладчик, который отлаживает распределение памяти с помощью malloc . Некоторые отладчики памяти (например, Valgrind ) работают, запуская исполняемый файл в среде, похожей на виртуальную машину, отслеживая доступ к памяти, ее выделение и освобождение, поэтому перекомпиляция с использованием специальных библиотек распределения памяти не требуется.

Поиск проблем с памятью, таких как утечки, может занять чрезвычайно много времени, поскольку они могут не проявиться, за исключением определенных условий. Использование инструмента для обнаружения неправильного использования памяти делает этот процесс намного быстрее и проще. [1]

Поскольку аномально высокое использование памяти может быть фактором, способствующим старению программного обеспечения , отладчики памяти могут помочь программистам избежать аномалий программного обеспечения , которые могут привести к исчерпанию памяти компьютерной системы, обеспечивая тем самым высокую надежность программного обеспечения даже в течение длительного времени работы .

Сравнение со статическим анализатором [ править ]

Некоторые инструменты статического анализа также могут помочь найти ошибки памяти. Отладчики памяти работают как часть приложения во время его работы , а статический анализ кода выполняется путем анализа кода без его выполнения. Эти разные методы обычно позволяют обнаружить разные случаи проблем, и их совместное использование дает наилучший результат. [2]

Список инструментов отладки памяти [ править ]

Это список инструментов, полезных для отладки памяти. Профилировщик . можно использовать вместе с отладчиком памяти

Имя ТЫ Лицензия Языки Техника
АдресСанитайзер Линукс, МакОС Бесплатный/открытый исходный код (LLVM) С, С++. Инструментарий времени компиляции (доступен в Clang и GCC ) и специализированная библиотека.
Выровнять ДДТ Линукс, Синий Джин Собственная реклама C, C++ и F90. Также для параллельных программ на суперкомпьютерах. Среда выполнения — посредством динамического связывания
AQtime Windows (Visual Studio, IDE Embarcadero) Собственная реклама .NET, C++, Java, Silverlight, JScript, VBScript [3] Время выполнения
Проверить Солярис
ГраницыЧекер Windows (Визуальная студия) Собственная реклама С++ Перехваты во время выполнения или время компиляции
Дайкон Юникс, Windows, Mac OS X [4] Бесплатно/с открытым исходным кодом [5] Java, C/C++, Perl и Eiffel [4] Обнаружение динамических инвариантов во время выполнения
Debug_new (общая техника) (общая техника) С++ Переопределение во время компиляции
Деликер Windows (автономно и плагины для Visual Studio, RAD Studio, Qt Creator, CLion) Собственная реклама С++, .Net, Делфи Перехваты во время выполнения
dmalloc Любой Бесплатно/с открытым исходным кодом С Переопределение во время компиляции
ДинамоРИО § Доктор Память Андроид, Линукс, Винда Бесплатный/открытый исходный код (LGPL и BSD) Любой Перехваты во время выполнения
Электрический забор Юникс GNU GPL С, С++ Переопределение во время компиляции
БАСТММ4 Окна GNU GPL Дельфи Переопределение во время компиляции
IBM Рациональная очистка Юникс, Винда Собственная реклама С++, Ява, .NET Время выполнения
Застраховать++ Windows (плагин Visual Studio), Unix Собственная реклама С, С++ инструментирование исходного кода
Инспектор разведки Windows (Visual Studio), Linux Собственная реклама С, С++, Фортран Время выполнения
libcwd Линукс (ГЦК) Бесплатно/с открытым исходным кодом С, С++ Переопределение во время компиляции
я люблю это Солярис В комплекте с Солярисом Переопределение времени соединения
Мемвотч Любой (библиотека программирования) Бесплатно/с открытым исходным кодом С Переопределение во время компиляции
mtrace Различный ГНУ ЛГПЛ библиотека GNU C Встроенный, доступ к выходам
МТюнер Различный Бесплатно С, С++ Перехваты во время выполнения, переопределение времени соединения (MSVC, Clang и GCC), обнаружение утечек
Oracle Solaris Studio (ранее Sun Studio Runtime Checking) Линукс, Солярис Проприетарное бесплатное ПО С, С++, Фортран
ОЛИВЕР (APT международный) MVS, MVS/EXA, DOS/VSE Собственное программное обеспечение IBM Ассемблер Перехваты во время выполнения, гипервизор — тип 2
ТоталВью Юникс, Мак ОС Х Собственная реклама С, С++, Фортран Время выполнения
Валгринд § Проверка памяти Линукс, Мак ОС, Андроид GNU GPL Любой Перехваты во время выполнения
WinDbg Окна Проприетарное бесплатное ПО С, С++, .NET, Питон Время выполнения

См. также [ править ]

Ссылки [ править ]

  • Майкл К. Даконта: Указатели C++ и динамическое управление памятью , John Wiley & Sons, ISBN   0-471-04998-0
  • Эндрю Кениг : C Ловушки и ловушки , Эддисон-Уэсли, ISBN   0-201-17928-8

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0d40cba2edbc56c821ea3371d895cd08__1661141820
URL1:https://arc.ask3.ru/arc/aa/0d/08/0d40cba2edbc56c821ea3371d895cd08.html
Заголовок, (Title) документа по адресу, URL1:
Memory debugger - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)