!HTRACE
簡単な紹介
!HTRACEは、一の以上のハンドル用の表示スタックトレース情報を拡張しました。
フォームを使用します
- 用户模式
!HTRACE [ ハンドル [ Max_Traces ]]
!HTRACE -enable [ Max_Traces ]
HTRACE -snapshot!
HTRACE -diff!
HTRACE -disable!
HTRACE! - ? - カーネルモード
!HTRACE [ ハンドル [ プロセス [ Max_Traces ]]] - !HTRACE - ?
パラメータ
- ハンドルは、
そのスタックトレースを表示するためにハンドルを指定します。ハンドルが0または省略された場合、プロセスハンドルは、すべてのスタックトレースが表示されます。 - 工程
そのハンドルが表示されます(カーネルモードのみ)プロセス。このプロセスは、ゼロまたは省略し、現在のプロセスである場合。ユーザモードでは、常に現在のプロセスを使用します。 - Max_Tracesは
最大数を表示するには、スタックトレースを指定します。このパラメータを省略した場合は、ユーザーモードでは、ターゲット・プロセスのスタックトレースのすべてが表示されます。 - -enable
(ユーザモードのみ)初期状態として使用-diff最初のスナップショットハンドル情報によってハンドルの追跡、およびオプションを有効にします。 - -snapshot
(ユーザモードのみ)初期状態-diffオプションとして使用される現在のハンドル情報のスナップショットを取ります。 - -diff
(のみユーザモード)最後のスナップショットを比較した現在のハンドル情報とハンドル情報。すべてはまだ開いているハンドルを表示します。 - -disable
(ユーザーモードのみ;のWindows Server 2003およびそれ以降のバージョンのみ)ハンドルの追跡を無効にします。WindowsXPのでは、終了処理の唯一の目標は、トラッキングが無効になって処理することができます。 - - ?
デバッガのコマンドウィンドウでいくつかの簡単なヘルプテキストのこの拡張機能を表示します。
支援環境
Windows 2000の |
無効 |
Windows XPおよびそれ以降のバージョン |
Kdexts Ntsdexts |
リマーク
あなたは!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.