!obtrace

Die Erweiterung !obtrace zeigt Objektreferenz-Tracing-Daten für das angegebene Objekt an.

!obtrace Object

Parameter

Object
Ein Zeiger auf das Objekt oder einen Pfad.

DLL

Kdexts.dll

Zusätzliche Informationen

Weitere Informationen über das Dienstprogramm Global Flags (GFlags) finden Sie in der Windows Driver Kit (WDK)-Dokumentation und unter Microsoft Windows Internals von Mark Russinovich und David Solomon.

Hinweise

Die Objektreferenz-Tracing-Funktion von Windows zeichnet sequenzielle Stack-Traces auf, wenn ein Objektreferenzzähler erhöht oder erniedrigt wird.

Bevor Sie diese Erweiterung zur Anzeige von Objektreferenz-Tracing-Daten verwenden, müssen Sie GFlags verwenden, um Objektreferenz-Tracing für das angegebene Objekt zu aktivieren. Sie können die Verfolgung von Objektreferenzen als Kernel-Flag-Einstellung (zur Laufzeit) aktivieren, bei der die Änderung sofort wirksam wird, aber verschwindet, wenn Sie herunterfahren oder neu starten; oder als Registrierungseinstellung, die einen Neustart erfordert, aber wirksam bleibt, bis Sie sie ändern.

Hier ist ein Beispiel für die Ausgabe der Erweiterung !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

Die wichtigsten Anzeigen in der Anzeige !obtrace 0xfa96f700 sind in der folgenden Tabelle aufgeführt.

Parameter Bedeutung

Sequence

Stellt die Reihenfolge der Vorgänge dar.

+/-

Zeigt eine Referenz- oder Dereferenz-Operation an.

+1 bedeutet einen Referenzvorgang.

-1 bedeutet eine Dereferenzierungsoperation.

+/- n bedeutet mehrfache Referenz-/Dereferenzoperationen.

Die Objektreferenzspuren auf x64-basierten Zielcomputern können unvollständig sein, da es nicht immer möglich ist, Stack Traces auf IRQL-Ebenen höher als PASSIVE_LEVEL zu erfassen.

Sie können die Ausführung jederzeit durch Drücken von CTRL+BREAK (in WinDbg) oder CTRL+C (in KD) stoppen.