LINUX.ORG.RU

Вышла новая версия трассировщика ресурсов ART Resource Tracer 0.9

 ,


0

1

В рамках проекта ART (http://skylark.tsu.ru/art/) развивается набор программных средств для автоматизированного поиска ошибок, связанных с использованием ресурсов в прикладных программах и ядрах ОС. В настоящее время поддерживается трассировка программ на языке Си. Язык описания ресурсов допускает отслеживание широкого спектра ресурсов, таких как память, разнообразные дескрипторы и произвольные структуры.

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

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

Ветвь 0.8 под GPL (http://sourceforge.net/projects/art-project/) Ветвь 0.9 пока что проприетарная, но это легко изменить, если нужно будет.

Для загрузки доступны (http://skylark.tsu.ru/art/0.9/download/bin/0.9.00/) двоичные сборки под GNU/Linux и FreeBSD. Проекту требуется тестирование, описание ресурсов (сейчас в примерах есть несколько функций для работы с памятью, несколько функций по работе с «FILE*»), конструктивная критика, комментарии.

>>> http://skylark.tsu.ru/art/



Проверено: anonymous_incognito ()
Последнее исправление: virtuallark (всего исправлений: 1)

Чего только не придумают, чтобы не использовать динамические среды выполнения.

anonymous
()
Ответ на: комментарий от anonymous

Чего только не придумают, чтобы не использовать valgrind.

ftfy

anonymous
()
Ответ на: комментарий от anonymous_incognito

Угу. И это вызывает у меня батхерт потому что новость получается о проприетарщине. Зачем нам проприетарщина?

true_admin ★★★★★
()

За «функционал» надо яйца отрывать. Ладно в комментариях опечатался или оговорился, но на сайте и несколько раз - это позор.

r2d2
()

Уважаемый автор, расскажите почему программисты должны пользоваться вашим продуктом, а не проверенными инструментами [lsm]trace, ctags, ldd? Спрашиваю как разработчик.

anonymous
()
Ответ на: комментарий от true_admin

Так не только проприетарное. Вообще-то интересно бы услышать от автора дополнительные подробности, в том числе, с примерами использования.

anonymous_incognito ★★★★★
()

Очередной лисапедист, выдал никому не нужно гавно

anonymous
()

Вот у меня ещё вопрос...

Ветвь 0.9 пока что проприетарная, но это легко изменить, если нужно будет.

А накуя, спрашивается, было делать её проприетарной? Стыдно за качество кода?

anonymous
()
Ответ на: комментарий от anonymous

Ну то есть, это приблизительно как «я тут вот дыру в стене сделал, но можно замазать если чо». Смысл где?

anonymous
()
Ответ на: комментарий от bga_

или наоборот, украденные у конкурентов ;)

XVilka ★★★★★
()

Ну так если легко изменить лицензию на версию 0.9., сделайте же это. А так смысла в помощи вам нет. Тестирование проприетарных программных продуктов - бессмысленно, никакого профита сообществу.

linuxmaster ★★★★
()
Ответ на: комментарий от anonymous

Потому что эти средства решают разные задачи.

virtuallark
() автор топика
Ответ на: комментарий от virtuallark

ну сейчас тебе скажут, что русские каменты в исходниках это неправильно... вообщем закидают какшками...

anonymous
()
Ответ на: комментарий от anonymous

Есть очень большое число программ на Си/Си++ (в т.ч. ядра ОС), в которых необходимо всякое нехорошее находить и ликвидировать. Это средство для этой цели.

virtuallark
() автор топика

Набежало кукаретиков, писающих в каждой теме сайта. Ещё и борцунов за свободу. Автор, так расскажи, почему всё-таки использовать не старое доброе. Это не попытка задеть, мне действительно интересно. Какой опыт работы у авторов пакета?

anonymous
()

Непонятно

Бегло пробежался по пдфке «ОБ ОБНАРУЖЕНИИ ОШИБОЧНОЙ РАБОТЫ С РЕСУРСАМИ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ»... Бла-бла-бла. Очень похоже на какой-то курсовик. Толком не понял в чем фишка этого продукта. Есть, например, valgrind, делает практически то же самое, но без каких либо танцев с бубном в виде XML описания ресурсов и работает не только для программ на C.

Поэтому хотелось бы, чтобы автор нам разжевал, в чем особенность и преимущества этой штуки, хотя бы по сравнению с valgrind.

ЗЫЖ Есть еще статические анализаторы кода, как это с ними соотносится?

navrocky
()

Обнаружение использования дикого ресурса

Обнаружение попытки перераспределения дикой памяти

Дикая память и дикий ресурс - штоето?

navrocky
()

Обнаружение многократного освобождения ресурса

Нельзя ли было применить трассировщик к тексту новости: вынести «Обнаружение» над списком?
Ресурс страницы был бы освобождён от 11*12=132 ненужных символов :)

quickquest ★★★★★
()
Ответ на: комментарий от anonymous

Каждая существующая программа обладает каким-то функционалом. ART также обладает реализованным на данном временном промежутке функционалом. По каким-то функциям ART пересекается с функциями других программ. По каким-то нет.

Основное назначение ART - выявлять в процессе работы программы определённые схемы работы (или отсутствия работы) с ресурсами. Программа может быть как прикладной (уже реализовано), так и ядром (не реализовано). Выявляемые схемы работы: от явных ошибок (использование ресурса после освобождения, использования без инициализации и т.п.), до предупреждений (ресурс захвачен, потом освобождён, но не был использован в промежутке, т.е. стоит обратить внимание, может не следовало его и захватывать) и информации к сведению (к примеру, realloc() на тот же размер).

Сейчас ART выявляет эти схемы и сообщает о месте их возникновения. Проект можно развивать в разные стороны, например, не только рапортовать о проблеме, а отказываться от такой схемы, где явно что-то плохое произойдёт (запись за границу ресурса и т.п.)

ART изначально заточена под абстрактное описание ресурсов. Т.е. сначала описываем как называется тип ресурса, какие функции его захватывают, где входящие-выходящие аргументы, коды возврата и т.п. Далее artlibgen (ART Library Generator) по этому описанию (в формате XML) создаёт заголовочный файл art.h где написаны переопределения препроцессора для замены вызова оригинальных функций на свою «оболочу», которая анализирует параметры, вызывает оригинальную функцию, анализирует и пишет трассу в файл (реализовано) обо всём этом. Затем эта трасса подаётся artrepgen'у (ART Report Generator) и он уже выдаёт конечный результат. Можно и в реальном времени анализировать, например, через сокет (не реализовано).

Как-то так. Ещё можно почитать статью, там подробно описано. Будут вопросы - напишу ответы. Лучше писать на email, т.к. тут я могу пропустить.

virtuallark
() автор топика
Ответ на: комментарий от quickquest

Я не могу найти, можно ли опубликованную новость отредактировать. А так да.

virtuallark
() автор топика
Ответ на: комментарий от navrocky

Это такой ресурс, с которым программы пытается работать, но он не был ей предварительно захвачен.

virtuallark
() автор топика
Ответ на: комментарий от virtuallark

Лучше писать на email, т.к. тут я могу пропустить.

Используй подписку по RSS на «ответы на мои комментарии» в профиле.

navrocky
()
Ответ на: Непонятно от navrocky

К статическим анализаторам ART не относится.

Детальное сравнение с valgrind я не проводил (таблички, графики, все дела), но на вскидку можно положить что valgrind работает с памятью (и не работает, например, с сокетами, FILE*, int-дескрипторами и т.п.), а ART работает с произвольными ресурсами (в т.ч. и с памятью). valgrind эмулятор, а ART нет. Значит скорость работы программы «под ART» может быть близка к работе отлаживаемой программы a-la натюрель. ART может допилен для трассирования модулей ядра (и м.б. для других частей ядра). Может ли valgrind - не знаю. ART работает во всех POSIX-системах (GNU/Linux, *BSD, MacOSX, Solaris, HPUX). А про valgrind я слышал слухи, что у него (были?) какие-то проблемы в работе во FreeBSD.

Но в целом, самое главное отличие - ART заточен под любые ресурсы, а valgrind под память.

virtuallark
() автор топика
Ответ на: комментарий от virtuallark

Ну и ещё для встраиваемых систем ART при желании можно использовать (по сети или компорт/ещё какая приблуда для связи). На таких слабых системах, где valgrind просто не запустится.

Сейчас это не реализовано, но возможность есть.

virtuallark
() автор топика

Планируется ли расширения функционала на С++, в плане отлова всяких нетривиальных ситуций типа неправильного поведения цепочки деструкторов в исключениях?

anonymous
()
Ответ на: комментарий от virtuallark

Ок. Убедил. Подведем итог: valgrind лучше ищет ошибки при работе с памятью, ART - для всего остального.

navrocky
()
Ответ на: комментарий от anonymous

Поддержка Си++ планируется (как минимум динамическое создание объектов и слежение за правильностью их работы). Насчёт возможности выявления конкретно этого случая «отлова нетривиальных ситуаций типа неправильного поведения цепочки деструкторов в исключениях» - на вскидку прямо сейчас сказать сложно. Нужно детально смотреть, желательно на исходный код - что является правильным и наоборот и как ART может это отследить.

virtuallark
() автор топика
Ответ на: комментарий от anonymous

Тем, что ищет ошибки при работе с любыми ресурсами, а не только с памятью, как mudflap.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.