Читаем ОТЛАДКА СИСТЕМ РЕАЛЬНОГО ВРЕМЕНИ. Обзор (СИ) полностью

В [24] описан способ, позволяющий уменьшить общее время разработки программного продукта за счет объединения средств тестирования и отладки. Такую возможность предоставляет отладчик Pilot (Kvatro Telecom). Подобное совмещение обладает следующими преимуществами: сразу выявляются ошибки в тесте; имеется возможность генерировать тесты в процессе отладки; результаты теста сразу обрабатываются и в случае ошибки передаются отладчику, который интерактивно воспроизводит этот тест. Средства поддержки отладки могут закладываться на стадии написания исходного текста и компиляции. Во время написания исходного текста в программный продукт может закладываться псевдо-агент — набор функций, осуществляющих некоторые отладочные действия. Для отладки с использованием исходных текстов приложения, необходимо при компиляции генерировать дополнительную информацию, состоящую из описаний символов программы (переменные, функции, типы) и псевдо-символов, позволяющих отладчику определять адреса строк исходного текста, адреса секций, и т.д.

<p>3. Средства мониторинга</p><p>3.1. Архитектура средств мониторинга</p>

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

При мониторинге агенту отладки не нужно поддерживать прямой связи с псевдо-агентами, так как псевдо-агенты могут посылать собранные данные в буфер, где они будут накапливаться вместе с остальными данными.

Рис. 4. Архитектура отладчика, осуществляющего мониторинг

Отладочные действия при мониторинге можно разделить на следующие категории:

• сбор данных;

• анализ данных;

• профилирование системы;

• «посмертный» анализ.

1) Сбор данных

Существует несколько способов сбора данных на целевой машине и передачи их менеджеру:

 • Передавать данные на инструментальную сторону по мере их поступления.

Этот способ применяется при оперативной отладке.

 • Передавать данные в случае заполнения буфера.

Обычный способ сбора данных при мониторинге.

 • Сохранять данные на диске.

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

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

  • начать сбор данных (указывается способ сбора, буфер или имя файла, период сбора, время между циклами или время завершения);

  • прервать сбор данных;

  • запланировать начало и/или конец сбора данных по времени, получению сигнала или произошедшему событию.

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

Один из способов протоколирования событий заключается в том, что на функции, исполнение которых приводит к некоторому событию, ставится специального вида точка прерывания (eventpoint). Такой подход позволяет пользователю определять собственные события (как это сделано в WindView — Wind River Systems, целевая система VxWorks).

Теперь рассмотрим технологию сбора данных на примере StethoScope (Wind River Systems, целевая система VxWorks). При сборе данных о функции используется механизм вставки исполняемого кода перед и после вызова отлаживаемой функции. Его суть в том, что пользователь может задать функции, вызовы которых будут предварять и завершать исполнение требуемой процедуры. Этот механизм используется и в служебных целях, например при трассировке задачи. Реализовать его можно так: на первую инструкцию отлаживаемой функции ставится точка прерывания, обрабатываемая особым образом, а именно:

  a. ставится точка прерывания на точку возврата из отлаживаемой функции;

  b. передается управление функции, которая должна быть вызвана перед отлаживаемой (если такая определена);

  c. запускается выполнение отлаживаемой функции.

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

Похожие книги

Книги не найдены