!obtrace

La extensión !obtrace muestra los datos de seguimiento de referencia de objetos para el objeto especificado.

!obtrace Object

Parámetros

Object
Un puntero al objeto o una ruta.

Archivo DLL

Kdexts.dll

Información adicional

Para obtener más información sobre la utilidad Global Flags (GFlags), consulte la documentación del Kit de controladores de Windows (WDK) y Microsoft Windows Internals por Mark Russinovich y David Solomon.

Comentarios

La característica de seguimiento de referencia a objetos de Windows registra seguimientos secuenciales de pila cada vez que se incrementa o decrementa un contador de referencia a objetos.

Antes de usar esta extensión para mostrar los datos de seguimiento de referencia a objetos, debe usar GFlags para habilitar el seguimiento de referencia a objetos para el objeto especificado. Puede habilitar el seguimiento de referencia a objetos como una configuración de marca de kernel (tiempo de ejecución), en la que el cambio es efectivo inmediatamente, pero desaparece si se apaga o se reinicia; o como configuración del Registro, que requiere un reinicio, pero sigue siendo efectiva hasta que la cambie.

Este es un ejemplo de la salida de la extensión !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

Los indicadores principales de la visualización !obtrace 0xfa96f700 se enumeran en la siguiente tabla.

Parámetro Significado

Secuencia

Representa el orden de las operaciones.

+/-

Indica una referencia o una operación de desreferencia.

+1 indica una operación de referencia.

-1 indica una operación de desreferencia.

+/- n indica varias operaciones de referencia o desreferencia.

Los seguimientos de referencia a objetos en equipos x64 pueden estar incompletas porque no siempre es posible adquirir seguimientos de pila en niveles IRQL superiores a PASSIVE_LEVEL.

Puede detener la ejecución en cualquier momento. Para ello, pulse CTRL+BREAK (en WinDbg) o CTRL+C (en KD).