!obtrace
A extensão !obtrace exibe dados de rastreamento de referência do objeto especificado.
!obtrace Object
Parâmetros
Objeto
Um ponteiro para o objeto ou um caminho.
DLL
Kdexts.dll
Informações Adicionais
Para mais informações sobre o utilitário Sinalizadores Globais (GFlags), consulte a documentação do Kit de Driver do Windows (WDK) e o livro Microsoft Windows Internals de Mark Russinovich e David Solomon.
Comentários
O recurso de rastreamento de referência de objeto do Windows registra rastreamentos de pilha sequencial sempre que um contador de referência de objeto é aumentado ou diminuído.
Antes de usar essa extensão para exibir dados de rastreamento de referência de objeto, é necessário usar GFlags para habilitar o rastreamento de referência do objeto especificado. É possível ativar o rastreamento de referência de objeto como uma configuração de sinalizador do kernel (tempo de execução), na qual a alteração é efetiva de forma imediata, mas desaparece se desligar ou reiniciar. Ou como uma configuração de registro, que requer uma reinicialização, mas permanece efetiva até que seja alterada.
Veja a seguir um exemplo da saída da extensão !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
Os principais indicadores na exibição !obtrace 0xfa96f700 estão listados na tabela a seguir.
Parâmetro | Significado |
---|---|
Sequência |
Representa a ordem das operações. |
+/- |
Indica uma operação de referência ou desreferência. +1 indica uma operação de referência. -1 indica uma operação de desreferência. +/- n indica operações múltiplas de referência/desreferência. |
Os rastreamentos de referência de objeto em computadores de destino baseados em x64 podem estar incompletos porque nem sempre é possível adquirir rastreamentos de pilha em níveis de IRQL superiores a PASSIVE_LEVEL.
É possível interromper a execução a qualquer momento pressionando CTRL+BREAK (no WinDbg) ou CTRL+C (no KD).