WikiDer > Отладчик памяти
Эта статья нужны дополнительные цитаты для проверка. (Декабрь 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
Выполнение программы |
---|
Общие понятия |
Типы кода |
Стратегии компиляции |
Заметное время выполнения |
|
Известные компиляторы и инструментальные средства |
А отладчик памяти это отладчик для поиска проблем с программной памятью, таких как утечки памяти и переполнение буфера. Это связано с ошибки связанных с распределением и освобождением динамическая память. Программы, написанные на языках, в которых вывоз мусора, Такие как управляемый код, также могут потребоваться отладчики памяти, например на предмет утечек памяти из-за "живых" ссылок в коллекциях.
Обзор
Отладчики памяти работают, отслеживая доступ к памяти, выделение и освобождение памяти. Многие отладчики памяти требуют перекомпиляции приложений со специальными библиотеками распределения динамической памяти, API-интерфейсы которых в основном совместимы с обычными библиотеками распределения динамической памяти, или же используют динамическое связывание. Забор под напряжением такой отладчик, который отлаживает выделение памяти с помощью маллок. Некоторые отладчики памяти (например, Валгринд) работают, выполняя исполняемый файл в среде, подобной виртуальной машине, отслеживая доступ к памяти, выделение и освобождение, так что перекомпиляция с использованием специальных библиотек распределения памяти не требуется.
Выявление проблем с памятью, таких как утечки, может занять очень много времени, поскольку они могут проявляться только при определенных условиях. Использование инструмента для обнаружения неправильного использования памяти делает процесс намного быстрее и проще.[1]
Поскольку аномально высокое использование памяти может быть фактором, способствующим старение программного обеспечения, отладчики памяти могут помочь программистам избежать программные аномалии что приведет к исчерпанию памяти компьютерной системы, что обеспечит высокую надежность программного обеспечения даже на время выполнения.
Сравнение со статическим анализатором
Немного инструменты статического анализа также может помочь найти ошибки памяти. Отладчики памяти работают как часть приложения, пока оно Бег пока статический анализ кода выполняется путем анализа кода без его выполнения. Эти разные методы обычно позволяют найти разные примеры проблем, и их совместное использование дает наилучший результат.[2]
Список инструментов отладки памяти
Это список инструменты полезно для отладки памяти. А профайлер может использоваться вместе с отладчиком памяти.
Имя | Операционные системы | Лицензия | Языки | Техника |
---|---|---|---|---|
AddressSanitizer | Linux, Mac OS | Свободный / открытый исходный код (LLVM) | C, C ++. | Инструментарий времени компиляции (доступен в Лязг и GCC) и специализированная библиотека |
Аллинея ДДТ | Linux, Blue Gene | Собственная реклама | C, C ++ и F90. Также для параллельных программ на суперкомпьютерах | Время выполнения - через динамическое связывание |
AQtime | Windows (Visual Studio, IDE Embarcadero) | Собственная реклама | .NET, C ++, Java, Silverlight, JScript, VBScript[3] | Время выполнения |
Bcheck | Солярис | |||
BoundsChecker | Windows (Visual Studio) | Собственная реклама | C ++ | Перехват во время выполнения или во время компиляции |
Дайкон | Unix, Windows, Mac OS X[4] | Бесплатно / с открытым исходным кодом[5] | Java, C / C ++, Perl и Eiffel[4] | Обнаружение динамических инвариантов во время выполнения |
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 | Windows | Свободный / открытый исходный код (GPL) | Delphi | Переопределение во время компиляции |
IBM Rational Purify | Unix, Windows | Собственная реклама | C ++, Java, .NET | Время выполнения |
Страхование ++ | Windows (плагин Visual Studio), Unix | Собственная реклама | C, C ++ | инструментарий исходного кода |
Инспектор Intel | Windows (Visual Studio) | Собственная реклама | 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 | Windows | Проприетарное бесплатное ПО | C, C ++, .NET, Python | Время выполнения |
Смотрите также
- Профилирование (компьютерное программирование)
- Список инструментов анализа производительности
- Отладчик
- Обнаружение ошибок времени выполнения
- Тестирование программного обеспечения
- Программная инженерия
- Компьютерное программирование
- Дамп ядра
Рекомендации
- Майкл С. Даконта: Указатели C ++ и управление динамической памятью, Джон Уайли и сыновья, ISBN 0-471-04998-0
- Эндрю Кениг: C Ловушки и подводные камни, Эддисон-Уэсли, ISBN 0-201-17928-8
- ^ «Обзор: 5 отладчиков памяти для программирования под Linux». Получено 24 августа, 2017.
- ^ «Динамический анализ против статического». Получено 24 августа, 2017.
- ^ «Архивная копия». Архивировано из оригинал в 2013-09-19. Получено 2013-01-14.CS1 maint: заархивированная копия как заголовок (связь)
- ^ а б http://groups.csail.mit.edu/pag/daikon/download/doc/daikon.html
- ^ http://groups.csail.mit.edu/pag/daikon/download/doc/daikon.html#License
внешняя ссылка
- "Охота за ошибками памяти"Иван Скайтт Йоргенсен
- "Сравнение программ проверки свободной памяти"Жан-Филипп Мартен[требуется полная цитата]