В рамках проекта ART развивается набор программных средств для автоматизированного поиска ошибок, связанных с использованием ресурсов в прикладных программах и ядрах ОС. В настоящее время поддерживается трассировка программ на языке Си. Язык описания ресурсов допускает отслеживание широкого спектра ресурсов, таких как память, разнообразные дескрипторы и произвольные структуры.

Список возможностей:

  • Обнаружение многократного освобождения ресурса;
  • Обнаружение утечек ресурсов;
  • Обнаружение ситуации когда функция захвата возвращает уже захваченный ресурс;
  • Обнаружение использования незахваченного ресурса;
  • Обнаружение использования ресурса после освобождения;
  • Обнаружение освобождения неиспользованного ресурса;
  • Обнаружение использования ошибочного (NULL для памяти, -1 для дескрипторов, ...) ресурса;
  • Обнаружение использования "дикого" ресурса;
  • Обнаружение освобождения ошибочного ресурса;
  • Обнаружение захвата памяти нулевого размера (malloc(), calloc(), realloc());
  • Обнаружение попытки перераспределения "дикой" памяти;
  • Обнаружение перезахвата такого же объёма (эффективность).

Для загрузки доступны двоичные сборки под GNU/Linux и FreeBSD. Исходный код можно загрузить из HG-репозитория. Код распространяется под лицензией GPL. Проекту требуется обкатка на реальном ПО, тестирование, описание ресурсов (сейчас в примерах есть несколько функций для работы с памятью, несколько функций по работе с "FILE*"), конструктивная критика.

Источник: http://www.opennet.ru/opennews/art.shtml?num=32665