Интернет магазин китайских планшетных компьютеров



Компьютеры - Valgrind - Инструменты

02 мая 2011


Оглавление:
1. Valgrind
2. Обзор
3. Инструменты
4. Поддерживаемые платформы



Существует множество инструментов, входящих в состав Valgrind. Инструмент по умолчанию — Memcheck. Memcheck вставляет дополнительный код инструментирования вокруг почти всех инструкций, который отслеживает законность и адресуемость, что сохраняется в так называемые V-биты и A-биты соответственно. По ходу перемещения данных и манипулирования ими, код инструментирования отслеживает значения A- и V-битов, чтобы они всегда были корректны на однобитовом уровне.

Более того, Memcheck заменяет стандартное выделение памяти языка Си собственной реализацией, которая помимо прочего включает в себя защиту памяти вокруг всех выделенных блоков. Данная возможность позволяет Memcheck обнаруживать ошибки несоответствия, при которых программа считывает или записывает вне выделенного блока памяти. Проблемы, которые может обнаруживать Memcheck и предупреждать о них, включают в себя:

  • Попытка использования неинициализированной памяти
  • Чтение/запись в память после её освобождения
  • Чтение/запись с конца выделенного блока
  • утечки памяти

Ценой этого является потеря производительности; программы, запущенные под Memcheck, как правило выполняются в 5-12 раз медленее, чем при выполнении без Valgrind, а также использование большего объёма памяти. Поэтому немногие разработчики постоянно запускают свой код под Memcheck; наиболее распространена ситуация, когда или отслеживается какая-либо определенная ошибка, или для проверки того, что в коде нет скрытых ошибок.

В дополнение к Memcheck, Valgrind имеет и другие инструменты:

  • Addrcheck — облегченная версия Memcheck, работающая гораздо быстрее и потребляющая меньше памяти, но и обнаруживающая меньшее количество типов ошибок. Этот инструмент был удален в версии 3.2.0.
  • Massif — профилировщик кучи.
  • Helgrind и DRD — инструменты, способные отслеживать состояние гонки и подобные ошибки в многопоточном коде.
  • Cachegrind — профилирощик кэша и его графический интерфейс KCacheGrind
  • exp-ptrcheck — экспериментальный инструмент для поиска схожих ошибок по аналогии с memcheck, но с тем отличем, что есть возможность поиска некоторых дополнительных типов ошибок.


Просмотров: 3142


<<< SoftICE
VB Watch >>>