Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Расширение !htrace отображает сведения трассировки стека для одного или нескольких дескрипторов.
Синтаксис пользовательского режима
!htrace [Handle [Max_Traces]]
!htrace -enable [Max_Traces]
!htrace -snapshot
!htrace -diff
!htrace -disable
!htrace -?
Синтаксис режима ядра
!htrace [Handle [Process [Max_Traces]]]
!htrace -?
Параметры
Дескриптор указывает дескриптор , трассировка стека которого будет отображаться. Если дескриптор равен 0 или опущен, будут отображаться трассировки стека для всех дескрипторов процесса.
Процесс (только в режиме ядра) Указывает процесс, дескриптор которого будет отображаться. Если процесс равен 0 или опущен, используется текущий процесс. В пользовательском режиме текущий процесс всегда используется.
Max_Traces Указывает максимальное количество отображаемых трассировок стека. В пользовательском режиме, если этот параметр опущен, будут отображаться все трассировки стека для целевого процесса.
-enable (только в пользовательском режиме) включает трассировку и принимает первый моментальный снимок данных дескриптора, используемых в качестве начального состояния параметром -diff .
-snapshot (только в пользовательском режиме) принимает моментальный снимок текущей информации дескриптора для использования в качестве начального состояния параметром -diff .
-diff (только в пользовательском режиме) сравнивает текущие данные дескриптора с последним моментальным снимком данных дескриптора, которые были приняты. Отображает все дескрипторы, которые по-прежнему открыты.
-disable (только в пользовательском режиме) отключает трассировку.
-?
Отображает краткий текст справки для этого расширения в окне команды отладчика.
DLL-библиотеки
Windows XP и более поздние версии
Kdexts.dll Ntsdexts.dll
Дополнительная информация
Чтобы отобразить дополнительные сведения о конкретном дескрипторе , используйте расширение !handle .
Сведения об дескрипторах см. в разделе "Внутренние компоненты Microsoft Windows" Марком Руссиновичем и Дэвидом Соломоном.
Замечания
Перед использованием !htrace необходимо включить трассировку дескриптора. Одним из способов включения трассировки дескриптора является ввод команды !htrace -enable . Если трассировка дескриптора включена, данные трассировки стека сохраняются каждый раз, когда процесс открывает дескриптор, закрывает дескриптор или ссылается на недопустимый дескриптор. Это данные трассировки стека, отображаемые !htrace .
Обратите внимание, что можно также включить трассировку дескриптора, активировав средство проверки приложений для целевого процесса и выбрав параметр "Дескриптор".
Некоторые трассировки, сообщаемые !htrace , могут находиться в другом контексте процесса. В этом случае возвращаемые адреса могут не разрешаться должным образом в текущем контексте процесса или разрешать неправильные символы.
В следующем примере отображаются сведения обо всех дескрипторах в процессе 0x81400300.
kd> !htrace 0 81400300
Process 0x81400300
ObjectTable 0xE10CCF60
##
Handle 0x7CC - CLOSE:
0x8018FCB9: ntoskrnl!ExDestroyHandle+0x103
0x801E1D12: ntoskrnl!ObpCloseHandleTableEntry+0xE4
0x801E1DD9: ntoskrnl!ObpCloseHandle+0x85
0x801E1EDD: ntoskrnl!NtClose+0x19
0x010012C1: badhandle!mainCRTStartup+0xE3
## 0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D
Handle 0x7CC - OPEN:
0x8018F44A: ntoskrnl!ExCreateHandle+0x94
0x801E3390: ntoskrnl!ObpCreateUnnamedHandle+0x10C
0x801E7317: ntoskrnl!ObInsertObject+0xC3
0x77DE23B2: KERNEL32!CreateSemaphoreA+0x66
0x010011C5: badhandle!main+0x45
0x010012C1: badhandle!mainCRTStartup+0xE3
## 0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D
Handle 0x7DC - BAD REFERENCE:
0x8018F709: ntoskrnl!ExMapHandleToPointerEx+0xEA
0x801E10F2: ntoskrnl!ObReferenceObjectByHandle+0x12C
0x801902BE: ntoskrnl!NtSetEvent+0x6C
0x80154965: ntoskrnl!_KiSystemService+0xC4
0x010012C1: badhandle!mainCRTStartup+0xE3
## 0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D
Handle 0x7DC - CLOSE:
0x8018FCB9: ntoskrnl!ExDestroyHandle+0x103
0x801E1D12: ntoskrnl!ObpCloseHandleTableEntry+0xE4
0x801E1DD9: ntoskrnl!ObpCloseHandle+0x85
0x801E1EDD: ntoskrnl!NtClose+0x19
0x010012C1: badhandle!mainCRTStartup+0xE3
## 0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D
Handle 0x7DC - OPEN:
0x8018F44A: ntoskrnl!ExCreateHandle+0x94
0x801E3390: ntoskrnl!ObpCreateUnnamedHandle+0x10C
0x801E7317: ntoskrnl!ObInsertObject+0xC3
0x77DE265C: KERNEL32!CreateEventA+0x66
0x010011A0: badhandle!main+0x20
0x010012C1: badhandle!mainCRTStartup+0xE3
0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D
##
Parsed 0x6 stack traces.
Dumped 0x5 stack traces.