Enable kernel tracing — различия между версиями

Материал из Русский WINE
Перейти к: навигация, поиск
(Новая страница: «=Включение трассировки ядра= Материал из Неофициальная русскоязычная Wiki проекта ReactOS Пе…»)
 
м (Категория:Отладка)
 
(не показаны 2 промежуточные версии ещё одного участника)
Строка 1: Строка 1:
 
=Включение трассировки ядра=
 
=Включение трассировки ядра=
 
Материал из Неофициальная русскоязычная Wiki проекта ReactOS
 
Перейти к: навигация, поиск
 
 
В ядре ReactOS имеется компилируемый и активируемый по необходимости механизм помодульной трассировки.
 
В ядре ReactOS имеется компилируемый и активируемый по необходимости механизм помодульной трассировки.
  
Строка 9: Строка 6:
 
Для активации трассировки конкретного модуля, сначала найдите его файл заголовков в папке ntoskrnl/include/internal/ и измените
 
Для активации трассировки конкретного модуля, сначала найдите его файл заголовков в папке ntoskrnl/include/internal/ и измените
  
#define _X_DEBUG_ 0x00
+
  #define _X_DEBUG_ 0x00
 
на
 
на
  
#define _X_DEBUG_ 1
+
  #define _X_DEBUG_ 1
_X_DEBUG_ распологается в верхней части заголовка, а X - это сокращённое название модуля. При этом после полной чистой перекомпиляции ядра будет скомпилирована (но не активирована) поддержка трассировки выбранного модуля.
+
''_X_DEBUG_'' располагается в верхней части заголовка, а '''X''' - это сокращённое название модуля. При этом после полной чистой перекомпиляции ядра будет скомпилирована (но не активирована) поддержка трассировки выбранного модуля.
  
Для активации трассировки в модуле необходимо найти переменную трассировки, и назначить ей в качестве значения одну или несколько отладочных масок. Отладочные маски каждого модуля находятся в файле заголовков этого модуля перед _X_DEBUG_.
+
Для активации трассировки в модуле необходимо найти переменную трассировки, и назначить ей в качестве значения одну или несколько отладочных масок. Отладочные маски каждого модуля находятся в файле заголовков этого модуля перед ''_X_DEBUG_''.
  
 
Переменные трассировки имеют следующие имена и расположения:
 
Переменные трассировки имеют следующие имена и расположения:
 
+
<center>
Сокр Имя Файл
+
{| class="wikitable collapsible" style="float:center; margin-left:2em"
CM CmpTraceLevel ntoskrnl/config/cmsysini.c
+
!Сокр||Имя||Файл
DBGK DbgkpTraceLevel ntoskrnl/dbgk/dbgkobj.c
+
|-
IO IopTraceLevel ntoskrnl/io/iomgr.c
+
|CM||CmpTraceLevel||ntoskrnl/config/cmsysini.c
LPC LpcpTraceLevel ntoskrnl/lpc/port.c
+
|-
OB ObpTraceLevel ntoskrnl/ob/obinit.c
+
|DBGK||DbgkpTraceLevel||ntoskrnl/dbgk/dbgkobj.c
PS PspTraceLevel ntoskrnl/ps/query.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
 +
|}
 +
</center>
 
Изначально все переменные установлены в значение 0:
 
Изначально все переменные установлены в значение 0:
  
ULONG PspTraceLevel = 0;
+
  ULONG PspTraceLevel = 0;
 
Для установки маски, просто задайте её в качестве значения переменной:
 
Для установки маски, просто задайте её в качестве значения переменной:
  
ULONG PspTraceLevel = PS_THREAD_DEBUG;
+
  ULONG PspTraceLevel = PS_THREAD_DEBUG;
 
При установке нескольких масок, разделяйте их при помощи оператора побитового ИЛИ языка C:
 
При установке нескольких масок, разделяйте их при помощи оператора побитового ИЛИ языка C:
  
ULONG PspTraceLevel = PS_THREAD_DEBUG | PS_PROCESS_DEBUG;
+
  ULONG PspTraceLevel = PS_THREAD_DEBUG | PS_PROCESS_DEBUG;
 
Для активации всех масок одновременно, назначьте переменной значение -1 (0xFFFFFFFF, все биты установлены):
 
Для активации всех масок одновременно, назначьте переменной значение -1 (0xFFFFFFFF, все биты установлены):
  
ULONG PspTraceLevel = -1;
+
  ULONG PspTraceLevel = -1;
Примечание: нет необходимости производить полную чистую перекомпиляцию если вы всего лишь установили отладочные маски.
+
'''Примечание:''' нет необходимости производить полную чистую перекомпиляцию если вы всего лишь установили отладочные маски.
  
 
Пример: Активация трассировки указателей и пространства имён модуля Ob:
 
Пример: Активация трассировки указателей и пространства имён модуля Ob:
  
Активируем _OB_DEBUG_ в ntoskrnl\include\internal\ob.h  
+
1.Активируем _OB_DEBUG_ в ntoskrnl\include\internal\ob.h  
#define _OB_DEBUG_ 1
+
  #define _OB_DEBUG_ 1
Устанавливаем ObpTraceLevel, расположенный в ntoskrnl\ob\obinit.c, в OB_HANDLE_DEBUG и OB_NAMESPACE_DEBUG.
+
2.Устанавливаем ObpTraceLevel, расположенный в ntoskrnl\ob\obinit.c, в OB_HANDLE_DEBUG и OB_NAMESPACE_DEBUG.
ULONG ObpTraceLevel = OB_HANDLE_DEBUG | OB_NAMESPACE_DEBUG;
+
  ULONG ObpTraceLevel = OB_HANDLE_DEBUG | OB_NAMESPACE_DEBUG;
Производим чистую перекомпиляцию ntoskrnl, получая тем самым поддержку трассировки в модуле
+
3.Производим чистую перекомпиляцию ntoskrnl, получая тем самым поддержку трассировки в модуле
make ntoskrnl_clean ntoskrnl
+
  make ntoskrnl_clean ntoskrnl
 
{{ReactOS}}
 
{{ReactOS}}
 +
[[Категория:Переводы официальной вики]]
 +
[[Категория:Отладка]]

Текущая версия на 11:14, 22 июня 2016

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

В ядре 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
Доклады
О ReactOSARWINSSЧеЗа
Информация Новости Выпуски новостейПереводы блоговНовости проектаВидеоReactOS на ХабреUSB от Вадима Галянта
Разработка Руководство по программированиюОтсутствующая функциональностьВетви разработкиКомпоненты системыReactOS и WineПлан работRoadmap ядра by VgalРазработчикиСовместимость с dll WindowsНаиболее значимые изменения за годИспользуемые проектыGoogle Summer of CodeИзвестные проблемы
Порты AMD64ARMXboxPowerPC
Компоненты Файловые системыРежим совместимостиОтчеты об ошибкахПечатьUSBЯдро
Загрузчик Восстановление MBRЗагрузка из GRUBПараметры загрузки
Прочее ARWINSSПриложения в ReactOSОформление ReactOSКоординаторы"Пасхальные яйца"Монетизация
Другое Типы ядерFreeWin95
Помощь
RAM-диск ReactOS по PXEс жесткого диска
Разработка Стиль написания кодаСтандарты RC-файловРабота с документациейВенгерская нотацияGNU Indent • [ Subversion : ветвислияниеиспользование TortoiseSVN ] • Основы переводаОтправка патчей
Репорты Отладка в VirtualBoxОтладка на экранДобавление программы в менеджер приложенийОтправка отчетов
Отладка Com0comGDBKdbgRossym.gdbRoswin.gdbWinDBGРуководство по WinDBGВключение трассировки ядраКоды DPRINTУдалённый отладчик ReactOS
Сборка CMakeRBuildФайлы RBuildАвтоматическое копирование файловСборка MINGW-w64Сборка модулейСреда сборки
Тестирование VirtualBoxVMwareQEMUHyper-VНеобходимый объём дискаПеренос файлов на виртуальный дискУстановка ReactOSУстановка драйверов
Сеть Общие папкиSambaNFS
Игры Установка DirectPlay
Обновление ReactOSЗагрузочная флешкаЧем можно помочь проектуСоздание нового пользователяЗвук и сеть в VirtualBoxСъемка и публикация видеоIRC-каналСторонние компонентыFAQReactOS как рабочая станцияReactOS и UEFI
Обзоры ОболочкаNTVDMWOWCommunity EditionИстория сайтаReactOS ServerКриптографияПО времен XP