Трассировка (программное обеспечение) - Tracing (software)

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

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

В этой статье рассматривается в первую очередь трассировка в целях отладки или диагностики.

Журнал событий против трассировки

Трудности в проведении четкого различия между регистрацией событий и программной трассировкой возникают из-за того, что одни и те же технологии используются для обоих, а также из-за того, что многие из критериев, которые различают эти два, являются непрерывными, а не дискретными. В следующей таблице перечислены некоторые важные, но ни в коем случае не точные или универсальные различия, которые используются разработчиками для выбора технологий для каждой цели и которые определяют отдельные разработки новых технологий в каждой области:

Журнал событий Отслеживание программного обеспечения
Потребляется в основном системными администраторами Потребляется в первую очередь разработчиками
Регистрирует "высокоуровневую" информацию (например, неудачную установку программы) Регистрирует "низкоуровневую" информацию (например, выброшенное исключение ).
Не должен быть слишком "шумным" (содержать много повторяющихся событий или информации, не полезной для целевой аудитории) Может быть шумно
Стандартов на основе формата вывода часто желательно, а иногда даже требуется Несколько ограничений на формат вывода
Сообщения журнала событий часто локализованы Локализация редко вызывает беспокойство
Добавление новых типов событий, а также новых сообщений о событиях не требует гибкости. Добавление новых сообщений отслеживания должно быть гибким

Журнал событий

Регистрация событий предоставляет системным администраторам информацию, полезную для диагностики и аудита . Различные классы событий, которые будут регистрироваться, а также то, какие детали будут отображаться в сообщениях о событиях, часто рассматриваются на ранних этапах цикла разработки. Многие технологии регистрации событий позволяют или даже требуют присвоения каждому классу событий уникального «кода», который используется программным обеспечением регистрации событий или отдельным средством просмотра (например, средством просмотра событий) для форматирования и вывода удобочитаемого сообщения. Это облегчает локализацию и позволяет системным администраторам более легко получать информацию о возникающих проблемах.

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

Особое внимание уделяется предотвращению "слишком частой" записи повторяющихся событий путем регулирования событий.

Отслеживание программного обеспечения

Трассировка программного обеспечения предоставляет разработчикам информацию, полезную для отладки. Эта информация используется как во время циклов разработки, так и после выпуска программного обеспечения. В отличие от регистрации событий, программная трассировка обычно не имеет понятия «класс» события или «код события». Другие причины, по которым решения для регистрации событий, основанные на кодах событий, не подходят для программной трассировки, включают:

  • Поскольку программная трассировка является низкоуровневой, часто необходимо определить гораздо больше типов сообщений, многие из которых будут использоваться только в одном месте кода. Парадигма кода события вводит значительные накладные расходы на разработку этих «одноразовых» сообщений.
  • Типы сообщений, которые регистрируются, часто менее стабильны в течение цикла разработки, чем для регистрации событий.
  • Поскольку выходные данные трассировки предназначены для использования разработчиком, сообщения не нужно локализовать. Поэтому важно хранить сообщения трассировки отдельно от других ресурсов, которые необходимо локализовать (например, сообщений о событиях).
  • Есть сообщения, которые никогда не следует видеть .
  • Сообщения трассировки должны храниться в коде, потому что они могут улучшить читаемость кода. Это не всегда возможно или выполнимо с решениями для регистрации событий.

Еще одно важное соображение при трассировке программного обеспечения - это производительность. Поскольку программная трассировка выполняется на низком уровне, возможный объем сообщений трассировки намного выше. Чтобы решить проблемы с производительностью, часто необходимо отключить трассировку программного обеспечения либо во время компиляции , либо во время выполнения.

Другие особые проблемы:

  • В проприетарном программном обеспечении данные отслеживания могут включать конфиденциальную информацию об исходном коде продукта .
  • Если трассировка включена или отключена во время выполнения, многие методы трассировки требуют включения значительного количества дополнительных данных в двоичный файл, что может косвенно снизить производительность, даже если трассировка отключена.
  • Если трассировка включена или отключена во время компиляции, получение данных трассировки для проблемы на компьютере клиента зависит от желания клиента и возможности установить специальную версию программного обеспечения с поддержкой трассировки, а затем дублировать проблему.
  • Многие виды использования трассировки предъявляют очень строгие требования к надежности . Это связано как с надежностью вывода трассировки, так и с тем, что отслеживаемый вариант использования не должен быть нарушен.
  • В операционных системах трассировка иногда полезна в ситуациях (например, при загрузке ), когда некоторые технологии, используемые для ведения журнала событий, могут быть недоступны.
  • во встроенном ПО для отслеживания требуются специальные методы.

Техники

Программная трассировка:

Журнал событий:

  • syslog (см. статью для конкретных реализаций)

Подходит для обоих:

Анализ следа

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

Смотрите также

использованная литература