Enable kernel tracing

Материал из Русский WINE
Перейти к: навигация, поиск

Включение трассировки ядра

В ядре ReactOS имеется компилируемый и активируемый по необходимости механизм помодульной трассировки.

Поддержка трассировки ядра в настроящий момент имеется в следующих модулях: CM, DBGK, IO, LPC, OB и PS

Для активации трассировки конкретного модуля, сначала найдите его файл заголовков в папке ntoskrnl/include/internal/ и измените

 #define _X_DEBUG_ 0x00

на

 #define _X_DEBUG_ 1

_X_DEBUG_ располагается в верхней части заголовка, а X - это сокращённое название модуля. При этом после полной чистой перекомпиляции ядра будет скомпилирована (но не активирована) поддержка трассировки выбранного модуля.

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

Переменные трассировки имеют следующие имена и расположения:

Сокр Имя Файл
CM CmpTraceLevel ntoskrnl/config/cmsysini.c
DBGK DbgkpTraceLevel ntoskrnl/dbgk/dbgkobj.c
IO IopTraceLevel ntoskrnl/io/iomgr.c
LPC LpcpTraceLevel ntoskrnl/lpc/port.c
OB ObpTraceLevel ntoskrnl/ob/obinit.c
PS PspTraceLevel ntoskrnl/ps/query.c

Изначально все переменные установлены в значение 0:

 ULONG PspTraceLevel = 0;

Для установки маски, просто задайте её в качестве значения переменной:

 ULONG PspTraceLevel = PS_THREAD_DEBUG;

При установке нескольких масок, разделяйте их при помощи оператора побитового ИЛИ языка C:

 ULONG PspTraceLevel = PS_THREAD_DEBUG | PS_PROCESS_DEBUG;

Для активации всех масок одновременно, назначьте переменной значение -1 (0xFFFFFFFF, все биты установлены):

 ULONG PspTraceLevel = -1;

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

Пример: Активация трассировки указателей и пространства имён модуля Ob:

1.Активируем _OB_DEBUG_ в ntoskrnl\include\internal\ob.h

 #define _OB_DEBUG_ 1

2.Устанавливаем ObpTraceLevel, расположенный в ntoskrnl\ob\obinit.c, в OB_HANDLE_DEBUG и OB_NAMESPACE_DEBUG.

 ULONG ObpTraceLevel = OB_HANDLE_DEBUG | OB_NAMESPACE_DEBUG;

3.Производим чистую перекомпиляцию ntoskrnl, получая тем самым поддержку трассировки в модуле

 make ntoskrnl_clean ntoskrnl
ReactOS
Search.png
Доклады
О ReactOS • ARWINSS • ЧеЗа
Информация Новости Выпуски новостей • Переводы блогов • Новости проекта • Видео • ReactOS на Хабре • USB от Вадима Галянта
Разработка Руководство по программированию • Отсутствующая функциональность • Ветви разработки • Компоненты системы • ReactOS и Wine • План работ • Roadmap ядра by Vgal • Разработчики • Совместимость с dll Windows • Наиболее значимые изменения за год • Используемые проекты • Google Summer of Code • Известные проблемы
Порты AMD64 • ARM • Xbox • PowerPC
Компоненты Файловые системы • Режим совместимости • Отчеты об ошибках • Печать • USB • Ядро
Загрузчик Восстановление MBR • Загрузка из GRUB • Параметры загрузки
Прочее ARWINSS • Приложения в ReactOS • Оформление ReactOS • Координаторы • "Пасхальные яйца" • Монетизация
Другое Типы ядер • FreeWin95
Помощь
RAM-диск ReactOS по PXE • с жесткого диска
Разработка Стиль написания кода • Стандарты RC-файлов • Работа с документацией • Венгерская нотация • GNU Indent • [ Subversion : ветви • слияние • использование TortoiseSVN ] • Основы перевода • Отправка патчей
Репорты Отладка в VirtualBox • Отладка на экран • Добавление программы в менеджер приложений • Отправка отчетов
Отладка Com0com • GDB • Kdbg • Rossym.gdb • Roswin.gdb • WinDBG • Руководство по WinDBG • Включение трассировки ядра • Коды DPRINT • Удалённый отладчик ReactOS
Сборка CMake • RBuild • Файлы RBuild • Автоматическое копирование файлов • Сборка MINGW-w64 • Сборка модулей • Среда сборки
Тестирование VirtualBox • VMware • QEMU • Hyper-V • Необходимый объём диска • Перенос файлов на виртуальный диск • Установка ReactOS • Установка драйверов
Сеть Общие папки • Samba • NFS
Игры Установка DirectPlay
Обновление ReactOS • Загрузочная флешка • Чем можно помочь проекту • Создание нового пользователя • Звук и сеть в VirtualBox • Съемка и публикация видео • IRC-канал • Сторонние компоненты • FAQ • ReactOS как рабочая станция • ReactOS и UEFI
Обзоры Оболочка • NTVDM • WOW • Community Edition • История сайта • ReactOS Server • Криптография • ПО времен XP