共用方式為


!htrace

!htrace 延伸模組會顯示一或多個句柄的堆棧追蹤資訊。

使用者模式語法

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

內核模式語法

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

參數

Handle 指定將顯示其堆疊追蹤的句柄。 如果 Handle 為 0 或省略,則會顯示進程中所有句柄的堆疊追蹤。

進程 (僅限核心模式) 指定將顯示其句柄的進程。 如果 Process 為 0 或省略,則會使用目前的進程。 在使用者模式中,一律會使用目前的進程。

Max_Traces 指定要顯示的堆疊追蹤數目上限。 在使用者模式中,如果省略此參數,則會顯示目標進程的所有堆疊追蹤。

-enable (僅限使用者模式) 啟用句柄追蹤,並擷取句柄資訊的第一個快照集,以做為 -diff 選項的初始狀態

-snapshot (僅限使用者模式) 擷取目前句柄資訊的快照集,以做為 -diff 選項的初始狀態

-diff (僅限使用者模式) 比較目前的句柄資訊與所擷取之句柄信息的最後一個快照集。 顯示仍在開啟的所有句柄。

-disable (僅限使用者模式) 停用處理追蹤。

-?

在 [調試程式命令] 視窗中顯示此延伸模組的簡短說明文字。

DLL

Windows XP 和更新版本

Kdexts.dll Ntsdexts.dll

其他資訊

若要顯示特定句柄的進一步資訊,請使用 !handle 延伸模組。

如需句柄的相關信息,請參閱 Mark Russinovich 和 David 所羅門的 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.