Трассировка (программное обеспечение) - Tracing (software) - Wikipedia
Разработка программного обеспечения |
---|
Активность ядер |
Парадигмы и модели |
Методологии и рамки |
Вспомогательные дисциплины |
Практики |
Инструменты |
Стандарты и свод знаний |
Глоссарии |
Контуры |
В программная инженерия, отслеживание предполагает специализированное использование протоколирование для записи информации о выполнении программы. Эта информация обычно используется программисты за отладка целей и, кроме того, в зависимости от типа и детализации информации, содержащейся в журнале трассировки, опытным системные администраторы или же техническая поддержка персонал и инструменты мониторинга программного обеспечения для диагностировать общие проблемы с ПО.[1] Отслеживание - это сквозная озабоченность.
Не всегда есть четкое различие между отслеживание и другие формы протоколирование, за исключением того, что термин отслеживание почти никогда не применяется к журналированию, которое является функциональное требование программы (исключая регистрацию данных из внешнего источника, такого как получение данных в физика высоких энергий эксперимент, и ведение журнала с упреждающей записью ). Журналы, в которых записывается использование программы (например, журнал сервера ) или же Операционная система события, которые в первую очередь интересуют системного администратора (см. например Просмотрщик событий ) попадают в терминологическую серую зону.
В этой статье рассматривается трассировка в основном в целях отладки или диагностики.
Журнал событий против трассировки
Трудности в проведении четкого различия между регистрацией событий и программной трассировкой возникают из-за того, что одни и те же технологии используются для обоих, а также из-за того, что многие из критериев, которые различают эти два, являются непрерывными, а не дискретными. В следующей таблице перечислены некоторые важные, но ни в коем случае не точные или универсальные различия, которые используются разработчиками для выбора технологий для каждой цели и которые определяют отдельную разработку новых технологий в каждой области:
Журнал событий | Программная трассировка |
---|---|
Потребляется в основном системными администраторами | Потребляется в основном разработчиками |
Регистрирует "высокоуровневую" информацию (например, неудачную установку программы) | Регистрирует "низкоуровневую" информацию (например, брошенный исключение ) |
Не должно быть слишком "шумным" (содержать много повторяющихся событий или информацию, не полезную для целевой аудитории) | Может быть шумно |
А основанный на стандартах выходной формат часто желателен, иногда даже необходим | Несколько ограничений на формат вывода |
Сообщения журнала событий часто локализованный | Локализация редко вызывает беспокойство |
Добавление новых типов событий, а также новых сообщений о событиях не требует гибкости. | Добавление новых сообщений отслеживания должен быть проворным |
Журнал событий
Журнал событий предоставляет системным администраторам информацию, полезную для диагностики и аудиторская проверка. Различные классы событий, которые будут регистрироваться, а также то, какие детали будут появляться в сообщениях о событиях, часто рассматриваются на ранних этапах цикла разработки. Многие технологии регистрации событий позволяют или даже требуют присвоения каждому классу событий уникального «кода», который используется программным обеспечением регистрации событий или отдельным средством просмотра (например, средством просмотра событий) для форматирования и вывода удобочитаемого сообщения. Это облегчает локализацию и позволяет системным администраторам более легко получать информацию о возникающих проблемах.
Поскольку ведение журнала событий используется для регистрации высокоуровневой информации (часто информации об ошибках), производительность реализации регистрации часто менее важна.
Особое внимание уделяется предотвращению "слишком частой" записи повторяющихся событий. регулирование событий.
Программная трассировка
Трассировка программного обеспечения предоставляет разработчикам информацию, полезную для отладки. Эта информация используется как во время циклов разработки, так и после выпуска программного обеспечения. В отличие от регистрации событий программная трассировка обычно не имеет понятия «класс» события или «код события». Другие причины, по которым решения для регистрации событий, основанные на кодах событий, не подходят для программной трассировки, включают:
- Поскольку программная трассировка является низкоуровневой, часто необходимо определить гораздо больше типов сообщений, многие из которых будут использоваться только в одном месте кода. Парадигма кода события привносит значительные накладные расходы на разработку этих «одноразовых» сообщений.
- Типы сообщений, которые регистрируются, часто менее стабильны на протяжении цикла разработки, чем для регистрации событий.
- Поскольку выходные данные трассировки предназначены для использования разработчиком, сообщения не нужно локализовать. Поэтому важно хранить сообщения трассировки отдельно от других ресурсов, которые необходимо локализовать (например, сообщений о событиях).
- Есть сообщения, которые никогда не должно быть видно.
- Сообщения трассировки следует хранить в коде, потому что они могут улучшить читаемость кода. Это не всегда возможно или выполнимо с решениями для регистрации событий.
Еще одно важное соображение при трассировке программного обеспечения - это производительность. Поскольку программная трассировка выполняется на низком уровне, возможный объем сообщений трассировки намного выше. Чтобы решить проблемы с производительностью, часто необходимо отключить отслеживание программного обеспечения либо в время компиляции или время выполнения.
Другие особые проблемы:
- В проприетарное программное обеспечение, данные отслеживания могут включать конфиденциальную информацию о продукте исходный код.
- Если трассировка включена или отключена во время выполнения, многие методы трассировки требуют включения значительного количества дополнительных данных в двоичный файл, что может косвенно повлиять на производительность, даже если трассировка отключена.
- Если трассировка включена или отключена во время компиляции, получение данных трассировки для проблемы на компьютере клиента зависит от желания клиента и возможности установить специальную версию программного обеспечения с поддержкой трассировки, а затем дублировать проблему.
- Многие способы отслеживания очень строгие. надежность требования. Это связано как с надежностью вывода трассировки, так и с тем, что отслеживаемый вариант использования не должен быть нарушен.
- В операционных системах трассировка иногда полезна в ситуациях (например, загрузка ), где некоторые технологии, используемые для ведения журнала событий, могут быть недоступны.
- в встроенное программное обеспечение, для отслеживания требуются особые приемы.[2]
Методы
Программная трассировка:
- Макросы трассировки
- Вывод в отладчик
- Аспектно-ориентированное программирование и связанные приборы техники
- Препроцессор трассировки программного обеспечения Windows (он же WPP)
- Трассировка FreeBSD и SmartOS с помощью DTrace - отслеживает ядро и пользовательскую среду
- Трассировка ядра Linux с помощью ftrace
- Трассировка на уровне системы и пользователя Linux с маркеры ядра и LTTng
- Трассировка приложений Linux с помощью СТЮ - часть того же проекта, что и LTTng
- Трассировка приложений Linux C / C ++ с обернуть
Журнал событий:
- системный журнал (см. статью для конкретных реализаций)
Подходит для обоих:
Анализ следов
Анализ трассировки заключается в извлечении знаний из выполнения программных систем. Один из видов анализа трассировки - это выравнивание трассы, он состоит из определения частей в трассе, которые являются общими и соответствуют одному и тому же поведению.[3] Выравнивание трассы - сложная проблема из-за размера трассы, а также из-за недетерминизма и шума в реальных трассировках.[4]
Смотрите также
Рекомендации
- ^ «По следовой книге». В архиве из оригинала от 24 февраля 2009 г.
- ^ Крафт, Йохан; Уолл, Андерс; Кинле, Хольгер (2010), «Запись трассировки для встроенных систем: уроки, извлеченные из пяти промышленных проектов», Проверка во время выполнения, Springer Berlin Heidelberg, стр. 315–329, Дои:10.1007/978-3-642-16612-9_24, ISBN 9783642166112
- ^ Вебер, Матиас; Брендель, Ронни; Брюнст, Хольгер (2012). «Сравнение файлов трассировки с помощью алгоритма выравнивания иерархической последовательности». 2012 10-й Международный симпозиум IEEE по параллельной и распределенной обработке с приложениями. IEEE: 247–254. Дои:10.1109 / ispa.2012.40. ISBN 978-1-4673-1631-6.
- ^ Кабрера Артеага, Хавьер; Монперрус, Мартин; Бодри, Бенуа (2019). «Масштабируемое сравнение следов байт-кода JavaScript V8». Материалы 11-го международного семинара ACM SIGPLAN по виртуальным машинам и промежуточным языкам - VMIL 2019. ACM Press: 22–31. arXiv:1910.03478. Дои:10.1145/3358504.3361228. ISBN 9781450369879.