!obtrace

!obtrace 扩展显示指定对象的对象引用跟踪数据。

!obtrace Object

参数

对象
指向对象或路径的指针。

DLL

Windows 2000

不可用

Windows XP 及更高版本

Kdexts.dll

其他信息

有关全局标志实用工具 (GFlags) 的信息,请参阅 Windows 驱动程序工具包 (WDK) 文档和 Microsoft Windows Internals,主讲人:Mark Russin一和 David 一文。

备注

对象引用跟踪功能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显示的主要指示器。

参数 含义

序列

表示操作的顺序。

+/-

指示引用或取消引用操作。

+1 表示引用操作。

-1 表示取消引用操作。

+/- n 指示多个引用/取消引用操作。

基于 x64 的目标计算机上的对象引用跟踪可能不完整,因为并不总是可以在高于该级别的 IRQL 级别获取堆栈PASSIVE_LEVEL。

可以通过在 WinDbg 中按 CTRL+BREAK (或 KD) CTRL+C (停止) 。