Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

Регистрация событий [ править ]

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

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

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

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

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

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

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

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

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

Методы [ править ]

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

  • Макросы трассировки
  • Вывод в отладчик
  • Аспектно-ориентированное программирование и связанные с ним инструментальные методы
  • Препроцессор трассировки программного обеспечения Windows (также известный как WPP)
  • Трассировка FreeBSD и SmartOS с помощью DTrace - отслеживает ядро ​​и пользовательскую среду
  • Трассировка ядра Linux с помощью ftrace
  • Трассировка на уровне системы и пользователя Linux с помощью маркеров ядра и LTTng
  • Трассировка приложений Linux с помощью UST - часть того же проекта, что и LTTng
  • Трассировка приложений Linux C / C ++ с помощью cwrap

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

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

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

  • Моделирование набора команд

Анализ трассировки [ править ]

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

См. Также [ править ]

  • Отслеживание ветки
  • Приборостроение (компьютерное программирование)

Ссылки [ править ]

  1. ^ «Книга по следам» . Архивировано 24 февраля 2009 года.
  2. ^ Крафт, Йохан; Уолл, Андерс; Кинле, Хольгер (2010), «Запись трассировки для встроенных систем: уроки, извлеченные из пяти промышленных проектов», Проверка времени выполнения , Springer Berlin Heidelberg, стр. 315–329, doi : 10.1007 / 978-3-642-16612-9_24 , ISBN 9783642166112
  3. ^ Вебер, Матиас; Брендель, Ронни; Брюнст, Хольгер (2012). «Сравнение файла трассировки с помощью алгоритма иерархического выравнивания последовательности». 2012 10-й Международный симпозиум IEEE по параллельной и распределенной обработке приложений . IEEE: 247–254. DOI : 10.1109 / ispa.2012.40 . ISBN 978-1-4673-1631-6.
  4. ^ Кабрера Артеага, Хавьер; Монперрус, Мартин; Бодри, Бенуа (2019). «Масштабируемое сравнение следов байт-кода JavaScript V8». Материалы 11-го международного семинара ACM SIGPLAN по виртуальным машинам и промежуточным языкам - VMIL 2019 . ACM Press: 22–31. arXiv : 1910.03478 . DOI : 10.1145 / 3358504.3361228 . ISBN 9781450369879.