!obtrace

L'estensione !obtrace visualizza i dati di traccia dei riferimenti agli oggetti per l'oggetto specificato.

!obtrace Object

Parametri

Oggetto
Puntatore all'oggetto o a un percorso.

DLL

Kdexts.dll

Informazioni aggiuntive

Per altre informazioni sull'utilità Global Flags (GFlags), vedere la documentazione di Windows Driver Kit (WDK) e microsoft Windows Internals di Mark Russinovich e David Solomon.

Osservazioni:

La funzionalità di traccia dei riferimenti agli oggetti di Windows registra tracce dello stack sequenziale ogni volta che un contatore di riferimento oggetto viene incrementato o decrementato.

Prima di utilizzare questa estensione per visualizzare i dati di traccia dei riferimenti agli oggetti, è necessario utilizzare GFlags per abilitare la traccia dei riferimenti agli oggetti per l'oggetto specificato. È possibile abilitare la traccia dei riferimenti agli oggetti come impostazione del flag del kernel (runtime), in cui la modifica è effettiva immediatamente, ma scompare se si arresta o si riavvia; o come impostazione del Registro di sistema, che richiede un riavvio, ma rimane efficace fino a quando non viene modificata.

Di seguito è riportato un esempio dell'output dell'estensione !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

Gli indicatori principali nella visualizzazione !obtrace 0xfa96f700 sono elencati nella tabella seguente.

Parametro Significato

Sequenza

Rappresenta l'ordine delle operazioni.

+/-

Indica un riferimento o un'operazione di dereferenziazione.

+1 indica un'operazione di riferimento.

-1 indica un'operazione di dereferenziazione.

+/- n indica più operazioni di riferimento/dereferenziazione.

Le tracce di riferimento agli oggetti nei computer di destinazione basati su x64 potrebbero essere incomplete perché non è sempre possibile acquisire analisi dello stack a livelli IRQL superiori a PASSIVE_LEVEL.

È possibile arrestare l'esecuzione in qualsiasi momento premendo CTRL+INTERR (in WinDbg) o CTRL+C (in KD).