!obtrace

L’extension !obtrace affiche les données de suivi de référence d’objet pour l’objet spécifié.

!obtrace Object

Paramètres

Object
Pointeur vers l’objet ou un chemin.

DLL

Kdexts.dll

Informations supplémentaires

Pour plus d’informations sur l’utilitaire Global Flags (GFlags), consultez la documentation WDK (Windows Driver Kit) et Microsoft Windows Internals (Au cœur de Windows) de Mark Russinovich et David Salomon.

Notes

La fonctionnalité de suivi de référence d’objet d’enregistrements Windows enregistre des traces de pile séquentielles chaque fois qu’un compteur de référence d’objet est incrémenté ou décrémenté.

Avant d’utiliser cette extension pour afficher les données de suivi de référence d’objet, vous devez utiliser GFlags pour activer le suivi de référence d’objet au niveau de l’objet spécifié. Vous pouvez activer le suivi des références d’objet en tant que paramètre d’indicateur de noyau (exécution), dans lequel la modification est effective immédiatement, mais disparaît si le système s'arrête ou redémarre ; ou en tant que paramètre de registre, qui nécessite un redémarrage, mais reste effectif jusqu’à ce que vous le modifiiez.

Voici un exemple de sortie de l’extension !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

Les indicateurs principaux de l’affichage !obtrace 0xfa96f700 sont répertoriés dans le tableau suivant.

Paramètre Signification

Séquence

Représente l’ordre des opérations.

+/-

Indique une opération de référencement ou de déréférencement.

+1 indique une opération de référencement.

-1 indique une opération de déréférencement.

+/- n indique plusieurs opérations de référencement/déréférencement.

Les traces de référence d’objet sur les ordinateurs cibles x64 peuvent être incomplètes, car il n’est pas toujours possible d’acquérir des traces de pile aux niveaux IRQL supérieurs à PASSIVE_LEVEL.

Vous pouvez arrêter l’exécution à tout moment en appuyant sur Ctrl+Pause (dans WinDbg) ou Ctrl+C (en KD).