Дамп трассировки что это

Дамп трассировки что это

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

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

Специальные возможности находятся в настройках и имеют значок руки в сером кружке. Нажимаем. Перед нами открывается первая часть функций:


Это жесты, которые будет воспринимать смартфон при выключенном экране. Там есть 4 основные функции, и 8 дополнительных которые можно настроить под себя

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


Помогает сэкономить заряд и сфокусироваться на работе

  • Умная крышка
    Используется с чехлом обложкой
  • Защита от разблокировки
    Датчики предотвращают случайную разблокировку смартфона в кармане (функция полезна если у вас не включена блокировка паролем)
  • Калибровка датчика приближения
    Название говорит само за себя
  • Датчик ускорения и гироскоп
    Используются в навигации и геолокации (тоже калибровка)
    Это была первая часть Специальных возможностей, вторая часть находится в этой же вкладке под названием Спец. Возможности (вот это да о_О)

  • Дамп трассировки
    Это функция будет полезна если вы играете в смартфон, когда будут обнаружены лаги смартфон сделает трассировку.
  • Субтитры
    Включение и настройка субтитров
  • Увеличить
    Тройным нажатием увеличивает картинку на экране. Удобно.
    Вот такие функции есть на Meizu

Также читайте нашу статью о том, как настроить Face ID на Meizu.

Трассировка используется во многих видах ПО: в эмуляторах, динамических распаковщиках, фаззерах. Традиционные трейсеры работают по одному из четырех принципов: эмуляция набора инструкций (Bochs), бинарная трансляция (QEMU), патчинг бинарных файлы для изменения потока управления (Pin), либо работа через отладчик (PaiMei, основанный на IDA). Но сейчас речь пойдет о более интересных подходах.

WARNING

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

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

Трассировка может происходить на разных уровнях: отслеживание каждой инструкции, базовых блоков либо только определенных функций. Как правило, она осуществляется путем пред/постинструментации, то есть патчинга потока управления в наиболее «интересных» местах. Другой метод состоит в том, чтобы просто приаттачить отладчик к исследуемой программе и обрабатывать ловушки и точки останова. Однако есть еще один не очень распространенный способ — задействовать функции центрального процессора. Одна из интересных возможностей процессоров Intel — флаг MSR-BTF, который позволяет отслеживать выполнение программы на уровне базовых блоков — на ветвлениях (бранчах). Вот что говорится по поводу данного флага в документации:

«Когда ПО устанавливает флаг BTF в MSR-регистре MSR_DEBUGCTLA и устанавливает флаг TF в регистре EFLAGS, процессор будет генерировать отладочное прерывание только после встречи с ветвлением или исключением.»

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

Рис. 1. Трансляция виртуальных адресов в физические

Хакер #181. Вся власть роботам!

Мониторинг взаимодействия с ОС позволяет отфильтровывать попытки доступа к реестру, контролировать изменения файлов, отслеживать взаимодействие процесса с различными системными ресурсами, а также вызовы определенных API-функций. Как правило, это реализуется через перехват API-функций, путем вставки «трамплинов», inline-хуков, модификацию таблицы импорта, установку брейкпоинтов. Другой вариант — задействовать системный вызов SYSCALL. Ведь если вспомнить, то каждая API-функция, которая вносит какие-то изменения в ОС, на самом деле представляет собой не что иное, как простую обертку для определенного системного вызова.

Рис. 2. Нумерация идентификаторов (ID) SYSCALL в Windows 8

Механизм SYSCALL представляет собой быстрый способ переключить CPL (Current Privilege Level) из режима пользователя в режим супервайзера, таким образом, приложение режима пользователя может вносить изменения в ОС (рис. 4).

Рис. 4. Обработка операций SYSCALL (по учебнику Intel)

Для выполнения упомянутых функций необходимо опуститься на уровень ядра (ring 0). Однако в режиме супервайзера уже появляется доступ к некоторым функциям, предоставляемым самой операционной системой: LoadNotify , ThreadNotify , ProcessNotify . Их использование помогает собрать информацию по загрузке и выгрузке для целевого процесса, такую как: список модулей, диапазоны адресов стека какого-либо потока, список дочерних процессов и прочее.

Вторая группа функций включает в себя дампер памяти, использующий MDL (memory descriptor list — список дескрипторов памяти), монитор памяти процессов, основанный на VAD (Virtual Address Descriptor), монитор взаимодействия с системой, который задействует nt!KiSystemCall64 , перехват доступа к памяти и ловушкам через IDT (Interrupt Descriptor Table).

Монитор памяти использует для своей работы VAD-дерево, которое представляет собой AVL-дерево, используемое для хранения информации об адресном пространстве процесса. Оно же используется, когда необходимо инициализировать PTE (Page Table Entry) для конкретной страницы памяти.

Рис. 3. Пример VAD-дерева

Как я предложил выше, отслеживание доступа к памяти может осуществляться через механизм защиты памяти (такая вот тавтология), но его реализация в режиме пользователя с помощью API-функций может слишком сильно отразиться на производительности. Однако если принять во внимание, что защита памяти основана на механизме MMU — пейджинге, то есть более простой способ: изменять таблицу страниц в режиме ядра, после чего нарушение режима доступа к памяти будет обрабатываться через генерацию процессором исключения PageFault, а управление будет передаваться на обработчик IDT[PageFault]. Установка перехватчика на обработчик PageFault позволит быстро получить сигнал о запросе на доступ к выбранным страницам.

Дереву VAD посвящена очень интересная статья Брендана Долан-Гэвитта «The VAD tree: A process-eye view of physical memory5».

Читайте также:  Звуковая подсистема discord что это

Все потому, что процесс может использовать только страницы памяти, помеченные как Valid (то есть выгруженные в память), в противном же случае будет возникать исключение PageFault, которое и будет перехватываться. Это означает, что если мы намеренно поставили Valid-флаг выбранной страницы памяти в значение invalid(0), то каждая попытка доступа к этой странице будет вызывать обработчик PageFault, что позволяет легко отфильтровать и обработать соответствующий запрос (вызывая callback к трейсеру и выставляя Valid-флаг для конкретного PTE).

Рис. 5. Флаги PTE

В предыдущем разделе я предложил некоторые «грязные» методы для режима ядра. Вообще, установка хуков — это неправильный способ, и мне он не нравится, точно так же, как не нравится он и ребятам из Microsoft. Для борьбы с такими методами мелкомягкие и разработали PatchGuard. К счастью, есть и другой способ для отлова PageFaults, ловушек или SYSCALL’ов — это гипервизор. Правда, данный вариант имеет как свои плюсы, так и свои минусы.

Минусы:

  • Виртуализировано не отдельное приложение, а вся система — на уровне ядра ЦП.
  • Оператор switch( VMMExit ) отбирает немного производительности, равно как и код гипервизора, выполняющийся для каждого из вариантов switch’а.

Плюсы:

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

При этом сам VMM (Virtual Machine Monitor) может быть минималистичным (микроVMM) и реализовывать только необходимую обработку, занимая при этом минимальный объем кода (пример).

Рис. 6. Некоторые callback’и, предоставляемые Intel VTx

Помимо всего, в данном случае вместо того, чтобы ставить хуки на IDT, можно все обрабатывать напрямую с помощью дебаг-исключения в VMM. То же самое относится и к перехвату ошибок страниц с помощью исключения PageFault в VMM или через реализацию EPT (Extended Page Table).

Рис. 7. Включаем вывод VMX для ловушек и сбоев

Можно отметить некоторые основные особенности описанного подхода:

  • целевой файл остается практически неизмененным:
  • для отслеживания (как пошагового, так и на уровне ветвлений) внедряется флаг TRAP;
  • адресные брейкпоинты через 0xCC или использование DRx;
  • мониторинг памяти путем изменения таблицы страниц процесса;
  • не нужно патчить бинарный файл;
  • можно использовать как трассировочный модуль из другого приложения;
  • можно отслеживать несколько приложений одновременно;
  • можно отслеживать несколько потоков одного приложения;
  • реализованы быстрые вызовы для переключения CPL.
  • Выделение трейсера из пространства целевого процесса в другой процесс дает несколько преимуществ: можно использовать его как отдельный модуль, можно сделать биндинги для Python, Ruby и других языков. Однако у этого решения есть и недостаток — очень большой удар по производительности (взаимодействие между процессами: чтение из памяти другого процесса, событийный механизм ожидания). Для ускорения трассировки необходимо перенести логику в адресное пространство целевого процесса, чтобы можно было быстро получать доступ к его ресурсам (памяти, стеку, содержимому регистров), а также опционально отказаться от VMM из-за негативного влияния обработки VMMExit на производительность и вернуться обратно к установке хуков для ловушек и обработчиков PageFault. Но с другой стороны, в будущих процессорах технологии виртуализации, наверное, станут более эффективными и не будут оказывать настолько большого влияния на производительность. К тому же возможности виртуализации для трассировки можно использовать гораздо шире, чем мы рассматриваем в рамках статьи, поэтому плюсы могут компенсировать снижение производительности.

    Что касается трассировщика для ядра, то здесь действуют все те же принципы:

    • отслеживание через ловушки (TRAP);
    • мониторинг памяти через изменение таблицы страниц;
    • callback’и трейсера передаются в приложения уровня пользователя;
    • не нужно патчить бинарные файлы целевого приложения.

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

    С другой стороны, за все эти возможности тоже приходится расплачиваться:

    • адресное пространство драйвера принадлежит не ему;
    • фаззинг в памяти — не такое уж простое дело;
    • неверное значение RIP, регистров, памяти. манипулирование ими может очень плохо закончиться;
    • необходимо четко представлять себе, что именно ты отслеживаешь или проверяешь;
    • необходимо в течение всего процесса трассировки помнить о многочисленных IRQL;
    • обработка исключений.

    Отделение от целевого процесса, а также инкапсуляция в модуль дают нам высокую масштабируемость и возможность совместной работы с другими модулями для создания более сложного инструмента. Таким образом, в случае реализации трейсера, например, на Python, можно будет использовать IDA Python, привязки LLVM, Dbghelp для отладочных символов, дизассемблеры (движки capstone и bea) и многое другое. Чтобы показать, насколько легко и быстро можно реализовать трассировщик на Python, приведу пример, в котором контролируется более трех вариантов доступа (RWE) в заданную область памяти:

    Как видишь, код очень лаконичен и понятен.

    Все рассмотренные выше подходы к трассировке я воплотил в DbiFuzz-фреймворке, который демонстрирует, как можно отслеживать работу исполняемого файла альтернативными методами. Как мы уже отмечали, некоторые из известных методов используют инструментацию, которая дает быстрое решение, но при этом предполагает серьезное вмешательство в целевой процесс и не сохраняет целостности бинарного файла. В отличие от них, DbiFuzz оставляет бинарный файл практически нетронутым, изменяя только PTE, BTF и вставляя флаг TRAP. Другая сторона этого подхода состоит в том, что при интересующем событии включается прерывание: переход ring 3 —ring 0 — ring 3. Так как DbiFuzz подразумевает прямолинейное вмешательство в контекст и поток управления целевого процессора, то его можно использовать для написания собственных инструментов (даже на Python) для доступа к целевому бинарному файлу и его ресурсам.

    Более подробно узнать про DbiFuzz-фреймворк ты можешь на моем сайте, на SlideShare и на портале ZeroNights

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

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

    Нет никаких проблем в запуске DbiFuzz на лету, просто установи ловушку или INT3-перехватчик. Поскольку мы не трогаем бинарный код целевого файла, то не будет никаких проблем с проверкой целостности, а флаг TRAP может быть заменен на MTF. Отслеживание ценных данных тоже не представляет никаких проблем, нужно просто установить соответствующий PTE — и твой монитор готов! Инструменты Python/Ruby/…? Просто создай нужные привязки (bindings) — и вперед!

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

    Читайте также:  Что означает скрепка в электронной почте

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

    Планировщик находится в наборе файлов bos.sysmgt.trace. Для того чтобы проверить, установлен ли данный набор файлов, введите команду

    lslpp -l | grep bos.sysmgt.trace

    Если в данные вывода содержат строку bos.sysmgt.trace , то набор файлов установлен, в противном случае, его необходимо установить.

    В разделе обсуждаются следующие вопросы:

    • Обзор
    • Управление трассировкой
    • Запись данных событий трассировки
    • Создание отчета трассировки
    • Получение данных трассировки из дампа

    Трассировщик системы AIX позволяет записать события трассировки, которые затем могут быть отформатированы командой trace report. События трассировки включены в ядро или код приложения, но отслеживаются только во время трассировки.

    Запустить трассировку позволяет команда trace и функция trcstart . Для завершения трассировки предназначены команда trcstop и функция trcstop . Для приостановки и возобновления трассировки предназначены команды trcoff и trcon , а также функции trcoff и trcon .

    После того как трассировка была остановлена с помощью команды trcstop , команда trcrpt позволяет создать отчет. Формат записей, применяемый данной командой, задается в файле шаблона /etc/trcfmt . Для установки шаблонов предназначена команда trcupdate . Дополнительная информация о шаблонах приведена в описании команды trcupdate.

    Команда trace позволяет запустить трассировку событий системы и осуществляет управление размером буфера и файла протокола трассировки. Информация об этой команде приведена в разделе, посвященном демону trace, книги Command’s Reference.

    Существует три способа сбора данных трассировки.

    1. По умолчанию данные непрерывно собираются в два буфера, причем пока данные трассировки заносятся в один буфер, данные другого буфера записываются в файл протокола. Если файл протокола достигает максимального размера, новые данные записываются поверх наиболее ранних записей.
    2. При круговом способе сбор данных осуществляется непрерывно, однако файл протокола записывается только после завершения трассировки. Этот способ применяется при отладке локализованной ошибки, если необходимо получить данные в момент ее возникновения. Трассировку можно запустить в любой момент, а затем завершить ее сразу после возникновения ошибки, таким образом будут получены данные о событиях, предшествовавших по времени возникновению ошибки. Для применения этого способа трассировки необходимо указать флаг демона трассировки -l .
    3. При третьем способе применяется один буфер, трассировка завершается при его заполнении, после чего данные из буфера записываются в файл протокола. В этот момент трассировка не завершается, а отключается (как если бы была введена команда trcoff ). Для завершения трассировки необходимо ввести команду trcstop. Этот способ применяется, если до сбора данных трассировка не должна заменять ввод-вывод и буферы. Для применения этого способа трассировки необходимо указать флаг -f .

    Обычно, команда trace запускается в асинхронном режиме, т.е. после ее запуска можно продолжить работу в обычном режиме. Для запуска трассировки в асинхронном режиме следует указать флаг -a . В этом случае для завершения трассировки необходимо ввести команду trcstop .

    Рекомендуется ограничивать отслеживаемую информацию. Флаги -j events и -k events позволяют указать наборы событий, которые будут включены (-j) в трассировку или исключены (-k) из нее. Обратите внимание, что для просмотра названий программ, связанных с точками трассировки, необходимо включить соответствующие точки трассировки. Дополнительная информация по этому вопросу приведена в описании команды trace command . Включить эти точки трассировки можно также, выбрав группу точек трассировки tidhk в программе SMIT.

    Например, для трассировки точки mbuf, 254, и просмотра названий программ необходимо ввести следующую команду trace :

    trace -aj 106,10c,134,139,465,254

    trcrpt -O exec=on

    Точки трассировки, необходимые для просмотра названий программ, меняются в зависимости от выпуска; дополнительная информация приведена в описании команды trace command . Опция trcrpt -O exec=on позволяет просмотреть названия программ, см. описание команды trcrpt command.

    В некоторых случаях рекомендуется указывать размер буфера и максимальный размер файла протокола. Для буферов трассировки необходима физическая память, так как запись точек трассировки должна осуществляться без подкачки. После достижения максимального размера файла протокола данные трассировки записываются поверх наиболее ранних записей. Флаги -T размер и -L размер позволяют указать в байтах размер буферов и максимальный размер данных трассировки в файле протокола.

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

    Следует также отметить, что по умолчанию память для буфера выделяется из кучи ядра. Если в куче недостаточно свободной памяти, она выделяется из отдельных сегментов. В загруженной системе рекомендуется выделять память из отдельных сегментов, чтобы не уменьшать размер кучи ядра. Для этого предназначен флаг -B команды trace .

    Управление трассировкой может также осуществляться из приложения. Дополнительная информация приведена в описаниях команд trcstart и trcstop.

    Существует два типа данных трассировки.

    Общие данные состоят из слова данных, буфера скрытых данных и длины этих данных. Этот тип применяется для трассировки таких элементов, как полные имена файлов. См. пункт Каналы трассировки общего назначения в раздела Общие сведения о трассировщике. Он находится в разделе Глава 27, Трассировщик.

    Специальные данные Это стандартные данные трассировки операционной системы AIX. Записи этого типа состоят из слова точки трассировки и до пяти слов данных трассировки. В 64-разрядных приложениях это 8-байтовые слова. При программировании на языке C для записи специальных данных предназначены макрокоманды TRCHKL0 — TRCHKL5 и TRCHKL0T — TRCHKL5T, определенные в файле /usr/include/sys/trcmacros.h . Если применить эти макрокоманды невозможно, обратитесь к описанию функции utrchook.

    Полное описание команды trcrpt приведено в разделе команда trcrpt. Эта команда позволяет создать из файла протокола, записанного командой trace , отчет для пользователя. По умолчанию команда форматирует данные из файла протокола /var/adm/ras/trcfile . Выходные данные команды trcrpt отправляется в стандартный вывод.

    Для создания отчета трассировки из файла по умолчанию и его записи в /tmp/rptout, введите команду

    Для создания отчета трассировки с названиями программ и именами системных вызовов из файла /tmp/tlog и его записи в файл /tmp/rptout введите команду

    Читайте также:  Ошибка загрузки компоненты vrsbase

    trcrpt -O exec=on,svc=on /tmp/tlog >/tmp/rptout

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

    trcdead /o /tmp/tlog /var/adm/ras/vmcore.0

    создает файл протокола трассировки /tmp/tlog, который затем может быть отформатирован командой

    Перечисленные команды являются частью трассировщика:

    trace Запускает трассировку системных событий. С помощью этой команды можно определять размер и параметры файла протокола трассировки, а также внутренних буферов трассировки, в которых хранятся данные об отслеживаемых событиях.
    trcdead Извлекает трассировочную информацию из системного дампа. Если в момент останова системы работали средства трассировки, то содержимое внутренних буферов трассировки будет включено в дамп. Эта команда извлекает данные об отслеживаемых событиях из файла дампа и записывает их в файл протокола трассировки.
    trcnm Генерирует список имен ядра для команды trcrpt . Этот список формируется из таблицы имен и таблицы имен загрузчика для объектного файла. С помощью файла имен ядра команда trcrpt выполняет преобразование адресов при формировании отчета из файла протокола трассировки.
    trcrpt Формирует отчеты об отслеживаемых событиях, занесенных в файл протокола трассировки. При вызове этой команды можно указать, какие события следует включить в отчет или, наоборот, не включать в него, а также определить формат вывода. Способ интерпретации командой trcrpt данных, относящихся к каждому событию, определяется шаблонами, хранящимися в файле /etc/trcfmt .
    trcstop Прекращает трассировку системных событий.
    trcupdate Обновляет шаблоны форматирования трассировки в файле /etc/trcfmt . При добавлении новых приложений или расширений ядра, регистрирующих события трассировки, в файл /etc/trcfmt необходимо добавить шаблоны для этих событий. Шаблоны форматирования трассировки определяют способ интерпретации данных, относящихся к каждому событию, в команде trcrpt . Программные продукты, выполняющие регистрацию событий, обычно запускают команду trcupdate во время установки.

    Трассировщик включает в себя следующие вызовы и функции:

    trcgen , trcgent Регистрирует наступление отслеживаемых событий в виде записей, состоящих более чем из пяти слов данных. С помощью функции trcgen можно регистрировать события в канале трассировки системных событий (канал 0) или в канале трассировки общего назначения (каналы 1-7). Номер канала передается в функцию при регистрации события. Функция trcgent добавляет к данным регистрации текущее системное время.
    trchook , utrchook Регистрирует наступление отслеживаемых событий в виде записей, состоящих не более чем из пяти слов данных. С помощью этих функций можно регистрировать события в канале трассировки системных событий (канал 0). Функция utrchook для повышения производительности использует специальный путь FAST-SVC; ее следует вызывать из программ пользовательского (прикладного) уровня.
    trcgenk , trcgenkt Регистрирует наступление отслеживаемых событий в виде записей, состоящих более чем из пяти слов данных. С помощью функции trcgenk можно регистрировать события в канале трассировки системных событий (канал 0) или в канале трассировки общего назначения (каналы 1-7). Номер канала передается в функцию при регистрации события. Функция trcgenkt добавляет к данным регистрации текущее системное время.
    trcoff Приостанавливает регистрацию отслеживаемых событий в канале трассировки системных событий (канал 0) или в канале трассировки общего назначения (каналы 1-7). При этом канал трассировки остается активным. Возобновить регистрацию событий можно с помощью функции trcon .
    trcon Запускает регистрацию отслеживаемых событий в канале трассировки системных событий (канал 0) или в канале трассировки общего назначения (каналы 1-7). Однако канал трассировки необходимо предварительно активизировать с помощью команды trace или функции trcstart . Приостановить регистрацию событий можно с помощью команды trcoff .
    trcstart Запрашивает канал трассировки общего назначения. Эта функция активизирует канал трассировки общего назначения и возвращает в вызывающее приложение номер канала, который впоследствии будет передаваться в функции trcgen , trcgent , trcgenk и trcgenkt .
    trcstop Освобождает и деактивизирует канал трассировки общего назначения.

    /etc/trcfmt Содержит шаблоны форматирования трассировки, с помощью которых команда trcrpt определяет способ интерпретации данных, относящихся к каждому событию.
    /var/adm/ras/trcfile Является файлом протокола трассировки по умолчанию. В команде trace можно указать другое имя файла протокола трассировки.
    /usr/include/sys/trchkid.h Содержит определения идентификаторов точек трассировки.
    /usr/include/sys/trcmacros.h Содержит набор часто применяемых макроопределений для регистрации отслеживаемых событий.

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

    Идентификатор точки трассировки представляет собой трехзначное шестнадцатеричное число, соответствующее отслеживаемому событию. Идентификатор точки трассировки занимает первые двенадцать разрядов ключевого слова. Идентификаторы точек трассировки определяются в файле /usr/include/sys/trchkid.h . В пользовательских приложениях могут применяться значения в диапазоне 0x010-0x0FF. Все остальные значения зарезервированы для системных целей. Список определенных в данный момент идентификаторов точек трассировки можно просмотреть с помощью команды trcrpt -j .

    Тип точки трассировки определяет формат данных о событии и указывается пользователем. Тип точки трассировки хранится в разрядах 12-16 ключевого слова. Более подробная информация о типах точек трассировки приведена в описаниях функций trcgen , trcgenk и trchook .

    Трассировщик может поддерживать до восьми активных сеансов трассировки одновременно. Каждый сеанс трассировки работает с отдельным каналом специального файла мультиплексной трассировки /dev/systrace . Канал 0 служит для регистрации системных событий. Трассировка системных событий запускается командой trace и прекращается командой trcstop . Каналы 1-7 называются каналами трассировки общего назначения и могут использоваться подсистемами для трассировки других событий, например, событий передачи данных.

    Для инициализации канала трассировки общего назначения подсистема вызывает функцию trcstart , которая активизирует канал трассировки и возвращает его номер. После этого модули подсистемы могут регистрировать события с помощью функций trcgen , trcgent , trcgenk или trcgenkt . Номер канала, возвращаемый функцией trcstart , должен передаваться в эти функции в числе прочих параметров. Подсистема может приостановить регистрацию с помощью функции trcoff , возобновить ее с помощью функции trcon и деактивизировать канал трассировки с помощью функции trcstop . События, отслеживаемые в каждом канале, должны заноситься в отдельный файл протокола трассировки, имя которого необходимо указать при вызове функции trcstart . Для активизации и деактивизации трассировки в подсистеме в последней должен быть предусмотрен пользовательский интерфейс.

    Каналы трассировки работают с общими идентификаторами точек трассировки, хранящимися в файле /usr/include/sys/trchkid.h , и шаблонами форматирования трассировки, хранящимися в файле /etc/trcfmt .

    Описание демона trace в книге AIX 5L Version 5.1 Commands Reference .

    Описания команд trcdead , trcnm , trcrpt , trcstop , trcupdate в книге AIX 5L Version 5.1 Commands Reference .

    Описания функций trchook , trcgen , trcoff , trcon , trcstart , trcstop в книге AIX 5L Version 5.1 Technical Reference: Base Operating System and Extensions Volume 2 .

    Ссылка на основную публикацию
    Вычитание в пятеричной системе счисления
    Рассмотрим два основных арифметических действия: сложение и умножение в различных системах счисления. Пятеричная система счисления Сложение Составим таблицу сложения для...
    Восстановить забытый пароль ржд
    Если Вы знаете логин и пароль, а войти на сайт РЖД у Вас не получается, то зайдите на сайт РЖД...
    Вызов на ivr положительный ноль что это
    Положительный ноль — это сервис, позволяющий абонентам МТС оставаться на связи, даже если баланс их лицевого счета отрицателен или равен...
    Готика 1 как продавать предметы
    Заберитесь в воду. Первое, что стоит знать о воде, это то, что если рядом с вами будут враги, вы не...
    Adblock detector