[ON] Версия компилятора Clang с поддержкой SAFECode для выявления ошибок при работе с памятью

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6000
ОС: gnu/linux

[ON] Версия компилятора Clang с поддержкой SAFECode для выявления ошибок при работе с памятью

Сообщение rssbot »


Анонсирован выпуск компилятора Clang, разрабатываемого в рамках проекта LLVM, отличающийся добавлением поддержки технологии SAFECode, позволяющей автоматизировать выявление ошибок, связанных с некорректной работой с памятью. Поддержка SAFECode включается через указание специальной опции и никак не влияет на поведение компилятора, когда данная опция не активна, т.е. представленный выпуск может быть использован в роли полной замены классической сборке clang/clang++. Для загрузки доступны как исходные тексты, так и готовые сборки для Linux и Mac OS X. В отличие от инструментов подобных Valgrind, Clang с поддержкой SAFECode обладает следующими преимуществами:
  • Он быстрее, так как не использует динамической трансляции исполняемого файла и может оптимизировать некоторые runtime-проверки;
  • Он более точен, так как знает расположение границ отдельного стека и глобальных объектов (для поиска данных границ Valgrind использует эвристические методы);
  • Он обеспечивает более полную диагностику ошибок, выдавая больше полезной информации о каждой выявленной проблемы.
Текущий выпуск ориентирован в первую очередь на определение фактов разыменования указателей, которые могут привести к переполнению буфера. В будущем из основного экспериментального проекта SAFECode, поддерживаемого сообществом разработчиков LLVM, в Clang будут перенесены некоторые дополнительные функции. Из ожидаемых в будущем улучшений можно отметить:
  • Выявление некорректного доступа к памяти (указатели, указывающие на несуществующий или удаленный объект);
  • Определение неправильных вызовов функции free(), например, двойное освобождение выделенной памяти;
  • Определение использования неинициализированных указателей;
  • Выявление ошибок при работе с памятью, вызванных неправильным использованием функций стандартной библиотеки;
  • Дополнительные оптимизации, включая удаление проверок корректности типов на этапе загрузки/сохранения и вынос за пределы циклов.
Clang представляет собой LLVM фронтенд для языков C, С++ и Objective-C, который можно использовать вместо GCC. Исходные тексты Clang распространяются в рамках лицензии BSD, что делает этот компилятор интересным решением для замены GCC в BSD-подобных ОС. В настоящее время активно развивается проект адаптации данного компилятора для сборки базовой системы и портов FreeBSD. Начиная с FreeBSD 9 код Clang будет включен в состав базовой системы и может быть использован вместо GCC в качестве системного компилятора FreeBSD. Используя Clang уже удалось обеспечить сборку таких значительных проектов, как ядро Linux и фреймворк Qt.


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


оригинал на opennet.ru
Спасибо сказали:
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: [ON] Версия компилятора Clang с поддержкой SAFECode для выявления ошибок при работе с памятью

Сообщение frp »

Ждем, когда допилят. valgrind-у давно нужна быстрая альтернатива.
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: [ON] Версия компилятора Clang с поддержкой SAFECode для выявления ошибок при работе с памятью

Сообщение Crazy »

frp писал(а):
19.08.2011 09:14
Ждем, когда допилят. valgrind-у давно нужна быстрая альтернатива.

google-perftools пробовал?

Desipere in loco
Спасибо сказали:
frp
Сообщения: 1445
ОС: Debian Squeeze

Re: [ON] Версия компилятора Clang с поддержкой SAFECode для выявления ошибок при работе с памятью

Сообщение frp »

Crazy писал(а):
19.08.2011 21:30
google-perftools пробовал?

google-perftools умеет обнаружать утечки памяти и обращения за пределами массивов?

PS. Использовал google-perftools только в качестве профайлера.
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: [ON] Версия компилятора Clang с поддержкой SAFECode для выявления ошибок при работе с памятью

Сообщение Crazy »

frp писал(а):
22.08.2011 17:09
Crazy писал(а):
19.08.2011 21:30
google-perftools пробовал?

google-perftools умеет обнаружать утечки памяти и обращения за пределами массивов?

PS. Использовал google-perftools только в качестве профайлера.

Какой то heap checker там есть. Сам еще не пробовал, поэтому и спрашиваю других)

Проверка valgrind-ом юнит тестов вполне терпимо по времени.

Desipere in loco
Спасибо сказали: