Отладчик памяти
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2011 г. ) |
Выполнение программы |
---|
Общие понятия |
Типы кода |
Стратегии составления |
Известное время выполнения |
|
Известные компиляторы и наборы инструментов |
|
Отладчик памяти — это отладчик для поиска проблем с памятью программного обеспечения, таких как утечки памяти и переполнение буфера . Это связано с ошибками, связанными с выделением и освобождением динамической памяти . Программам, написанным на языках со сборкой мусора , таких как управляемый код , также могут потребоваться отладчики памяти, например, для устранения утечек памяти из-за «живых» ссылок в коллекциях.
Обзор [ править ]
Отладчики памяти работают, отслеживая доступ к памяти, ее выделение и освобождение. Многие отладчики памяти требуют, чтобы приложения были перекомпилированы с использованием специальных библиотек динамического выделения памяти, 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
- ^ «Обзор: 5 отладчиков памяти для кодирования Linux» . 20 ноября 2015 года . Проверено 24 августа 2017 г.
- ^ «Динамический анализ против статического анализа» . Проверено 24 августа 2017 г.
- ^ «Управляемый код — AQtime Pro | SmartBear» . Архивировано из оригинала 19 сентября 2013 г. Проверено 14 января 2013 г.
- ↑ Перейти обратно: Перейти обратно: а б «Руководство пользователя инвариантного детектора Daikon» .
- ^ «Руководство пользователя инвариантного детектора Daikon» .
Внешние ссылки [ править ]
- « Охота на ошибки памяти », Иван Скитт Йоргенсен
- « Сравнение бесплатных программ проверки памяти », Жан-Филипп Мартен [ нужна полная цитата ]