!obtrace

!obtrace 拡張は、指定されたオブジェクトのオブジェクト参照トレースデータを表示します。

!obtrace Object

パラメーター

Object
オブジェクトへのポインタまたはパス。

DLL

Kdexts.dll

追加情報

グローバルフラグユーティリティ (GFlags) の詳細については、Windows Driver Kit (WDK) ドキュメントおよび Microsoft Windows Internals (Mark Russinovich and David Solomon 著) を参照してください。

解説

Windowsのオブジェクト参照トレース機能は、オブジェクト参照カウンタがインクリメントまたはデクリメントされるたびに、逐次スタックトレースを記録します。

この拡張機能を使用してオブジェクト参照トレースデータを表示する前に、GFlags を使用して指定したオブジェクトのオブジェクト参照トレースを有効にする必要があります。 オブジェクト参照トレースを有効にするには、カーネルフラグ(ランタイム)設定として、変更は即座に有効になりますが、シャットダウンしたり再起動したりすると消えてしまいます。

以下は、!obtrace 拡張機能からの出力の例である:

kd> !obtrace 0xfa96f700
Object: fa96f700        Image: cmd.exe
Sequence  (+/-)  Stack
--------  -----  ---------------------------------------------------
   2421d    +1  nt!ObCreateObject+180
                nt!NtCreateEvent+92
                nt!KiFastCallEntry+104
                nt!ZwCreateEvent+11
                win32k!UserThreadCallout+6f
                win32k!W32pThreadCallout+38
                nt!PsConvertToGuiThread+174
                nt!KiBBTUnexpectedRange+c

   2421e    -1  nt!ObfDereferenceObject+19
                nt!NtCreateEvent+d4
                nt!KiFastCallEntry+104
                nt!ZwCreateEvent+11
                win32k!UserThreadCallout+6f
                win32k!W32pThreadCallout+38
                nt!PsConvertToGuiThread+174
                nt!KiBBTUnexpectedRange+c

   2421f    +1  nt!ObReferenceObjectByHandle+1c3
                win32k!xxxCreateThreadInfo+37d
                win32k!UserThreadCallout+6f
                win32k!W32pThreadCallout+38
                nt!PsConvertToGuiThread+174
                nt!KiBBTUnexpectedRange+c

   24220    +1  nt!ObReferenceObjectByHandle+1c3
                win32k!ProtectHandle+22
                win32k!xxxCreateThreadInfo+3a0
                win32k!UserThreadCallout+6f
                win32k!W32pThreadCallout+38
                nt!PsConvertToGuiThread+174
                nt!KiBBTUnexpectedRange+c

   24221    -1  nt!ObfDereferenceObject+19
                win32k!xxxCreateThreadInfo+3a0
                win32k!UserThreadCallout+6f
                win32k!W32pThreadCallout+38
                nt!PsConvertToGuiThread+174
                nt!KiBBTUnexpectedRange+c

----  ----------------------------------------------------------
References: 3, Dereferences 2

!obtrace 0xfa96f700 表示の主なインジケータを以下の表に示します。

パラメーター 意味

Sequence

操作の順序を表します。

+/-

参照操作または非参照操作を示します。

+1は参照操作。

-1は非参照操作を示します。

+/- n は複数の参照/非参照操作を示します。

PASSIVE_LEVEL よりも高い IRQL レベルのスタック・トレースを取得できるとは限らないため、x64 ベースのターゲット・コンピュータのオブジェクト参照トレースは不完全な場合があります。

CTRL+BREAK(WinDbgの場合)またはCTRL+C(KDの場合)を押すことで、いつでも実行を停止できます。