Новость из категории: Информация

Cooperative Bug Isolation - привлекаем пользователей к поиску ошибок в программах

Содержание:
1. Принципы работы (Вы читаете данный раздел);
2. Установка, запуск и работа;
3. CBI и сообщество.
Cooperative Bug Isolation - привлекаем пользователей к поиску ошибок в программах

Локализация ошибок и поиск их первопричин - одна из основных задач при разработке и отладке программ. За десятилетия развития индустрии ИТ появилось немало инструментов, частично автоматизирующих эту задачу.

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

Безусловно, подобная информация для отладки необходима, но не всегда ее достаточно. Например, при анализе последовательности вызова функций, вызвавших крах приложения, нередко встает вопрос, какие действия пользователя привели к тому, что функции вызывались в такой последовательности и с такими аргументами.

Зачастую ошибки проявляются в специфических ситуациях, которые не были предусмотрены разработчиками и в которых программа ведет себя не совсем ожидаемым образом.



Cooperative Bug Isolation - привлекаем пользователей к поиску ошибок в программах
Бенджамин Либлит, один из авторов CBI

Одной из попыток расширить спектр данных, автоматически собираемых инструментами формирования отчетов об ошибках, является Cooperative Bug Isolation - CBI (http://research. cs.wisc.edu/cbi). CBI зародился как исследовательский проект в Висконсинском университете в Мадисоне (University of Wisconsin-Madison) и послужил основой для диссертации одного из основных авторов - Бенджамина Либлита (Benjamin Liblit) (см. рис. выше). Диссертация была защищена еще в 2004 году, а в 2005 году ее признала лучшей в области компьютерных наук организация ACM (Association for Computing Machinery, Ассоциация вычислительной техники - авторитетная научная организация, присуждающая, помимо прочего, премию Тьюринга). После защиты работа не была заброшена (как это нередко случается не только у нас, но и за рубежом) - проект продолжает развиваться и сейчас.

Принципы работы

Основной идеей CBI является сравнение хода работы программы, вызвавшего аварийную ситуацию, с работой в штатном режиме. Для сравнения используются трассы потока управления программы. В трассы помещается информация о последовательности вызовов функций, сработавших условиях ветвления и прочих аспектах, влияющих на процесс выполнения приложения. В принципе, схожие сведения можно получить и из образа памяти процесса с помощью отладчика (при условии, что анализируемая программа собрана с отладочной информацией), однако CBI использует собственный формат трасс, которыми авторам удобнее оперировать.

Для сбора необходимых данных требуется внести соответствующие изменения непосредственно в код приложения. Модифицированная программа самостоятельно составляет трассу потока управления при каждом запуске. Когда программа завершается (в любом случае -и аварийном, и обычном), отчет с трассой отправляется в централизованное хранилище на сайте CBI. В этом хранилище содержатся трассы, соответствующие корректной работе различных приложений; при получении трассы, приведшей к ошибке, эта трасса сравнивается с корректными. По задумке авторов, подобный анализ должен дать ключ к нахождению источника ошибки.

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

Рейтинг статьи

Оценка
0/5
голосов: 0
Ваша оценка статье по пятибальной шкале:
 
 
   

Поделиться

Похожие новости

Комментарии

^ Наверх