!obtrace

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

!obtrace Object

参数

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

DLL

Kdexts.dll

其他信息

有关 Global Flags Utility(GFlags)的详细信息,请参阅 Windows 驱动程序工具包(WDK)文档和 Microsoft Windows 内部资料(作者:Mark Russinovich 和 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 显示的主要指示器。

参数 含义

序列

表示操作顺序。

+/-

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

+1 指示引用操作。

-1 指示取消引用操作。

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

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

可以通过按 CTRL+BREAK(在 WinDbg 中)或 CTRL+C(在 KD 中)在任何时候停止执行。