Freigeben über


!htrace

Die Erweiterung !htrace zeigt Stack-Trace-Informationen für ein oder mehrere Handles an.

Benutzermodussyntax

!htrace [Handle [Max_Traces]] 
!htrace -enable [Max_Traces]
!htrace -snapshot
!htrace -diff
!htrace -disable
!htrace -? 

Kernelmodussyntax

!htrace [Handle [Process [Max_Traces]]] 
!htrace -? 

Parameter

Handle Gibt das Handle an, dessen Stack-Trace angezeigt werden soll. Wenn Handle 0 ist oder ausgelassen wird, werden Stack Traces für alle Handles im Prozess angezeigt.

Prozess (nur im Kernelmodus) Gibt den Prozess an, dessen Handles angezeigt werden sollen. Wenn Process 0 ist oder ausgelassen wird, wird der aktuelle Prozess verwendet. Im Benutzermodus wird immer der aktuelle Prozess verwendet.

Max_Traces Gibt die maximale Anzahl der anzuzeigenden Stack-Traces an. Wenn dieser Parameter im Benutzermodus weggelassen wird, werden alle Stack Traces für den Zielprozess angezeigt.

-enable (nur im Benutzermodus) Aktiviert die Handle-Verfolgung und nimmt den ersten Schnappschuss der Handle-Informationen auf, der als Ausgangszustand für die Option -diff verwendet wird.

-snapshot (nur Benutzermodus) Erstellt einen Schnappschuss der aktuellen Handle-Informationen, der als Ausgangszustand für die Option -diff verwendet wird.

-diff (nur im Benutzermodus) Vergleicht die aktuellen Handle-Informationen mit dem letzten Snapshot der Handle-Informationen, der erstellt wurde. Zeigt alle Handles an, die noch offen sind.

-disable (nur im Benutzermodus) Deaktiviert die Handleverfolgung.

-?

Zeigt einen kurzen Hilfetext für diese Erweiterung im Befehlsfenster des Debuggers an.

DLL

Windows XP und höher

Kdexts.dll Ntsdexts.dll

Zusätzliche Informationen

Um weitere Informationen über einen bestimmten Handle anzuzeigen, verwenden Sie die Erweiterung !handle.

Informationen über Handles finden Sie unter Microsoft Windows Internals von Mark Russinovich und David Solomon.

Hinweise

Bevor !htrace verwendet werden kann, muss die Handle-Verfolgung aktiviert sein. Eine Möglichkeit, die Handle-Tracing-Funktion zu aktivieren, ist die Eingabe des Befehls !htrace -enable. Wenn die Handle-Verfolgung aktiviert ist, werden jedes Mal, wenn der Prozess ein Handle öffnet, ein Handle schließt oder auf ein ungültiges Handle verweist, Stack-Trace-Informationen gespeichert. Diese Stack-Trace-Informationen werden von !htrace angezeigt.

Hinweis Sie können die Handle-Verfolgung auch aktivieren, indem Sie Application Verifier für den Zielprozess aktivieren und die Option Handles auswählen.

Einige der Traces, die von !htrace gemeldet werden, können aus einem anderen Prozesskontext stammen. In diesem Fall kann es sein, dass die Rückgabeadressen im aktuellen Prozesskontext nicht richtig aufgelöst werden oder dass sie zu den falschen Symbolen aufgelöst werden.

Im folgenden Beispiel werden Informationen über alle Handles in Prozess 0x81400300 angezeigt.

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.