Partager via


Exemple 15 : Utilisation du suivi de référence d’objet

Le suivi des références d’objet est une fonctionnalité Windows qui enregistre une trace de pile séquentielle lorsqu’un objet est référencé ou déréféré. Il est conçu pour détecter les erreurs dans la gestion des objets qui peuvent entraîner des incidents ou des fuites de mémoire. Certaines de ces erreurs sont difficiles à détecter, car elles n’apparaissent pas de manière cohérente. Pour plus d’informations, consultez Suivi des références d’objet.

Vous pouvez configurer le suivi de référence d’objet à l’aide de la boîte de dialogue Indicateurs globaux ou à l’invite de commandes . Les exemples suivants utilisent l’invite de commandes. Pour plus d’informations sur l’utilisation de la boîte de dialogue Indicateurs globaux pour configurer le suivi de référence d’objet, consultez Configuration du suivi de référence d’objet.

Vous pouvez utiliser Gflags pour activer, désactiver et configurer le suivi des références d’objet. Pour ce faire, procédez comme suit :

  • Utilisez Gflags pour activer le suivi de référence d’objet dans le Registre ou en tant que paramètre d’indicateur de noyau (heure d’exécution). Si vous ajoutez le paramètre au Registre, vous devez redémarrer l’ordinateur pour démarrer le suivi. Si vous activez la version d’exécution des paramètres, la trace démarre immédiatement, mais les paramètres de trace sont rétablis dans la clé de Registre lorsque vous arrêtez ou redémarrez l’ordinateur.

  • Démarrez le processus qui crée l’objet suspect. La trace inclut uniquement les objets créés par les processus démarrés après le début de la trace. Si le processus démarre pendant ou peu après le redémarrage, ajoutez les paramètres de trace au Registre, puis redémarrez le système.

  • Utilisez l’extension du débogueur !obtrace pour afficher la trace. Par défaut, la trace est conservée jusqu’à ce que l’objet soit détruit, mais vous pouvez utiliser le paramètre /p pour conserver la trace jusqu’à ce que le suivi soit désactivé.

  • Utilisez Gflags pour désactiver le suivi de référence d’objet.dans le Registre ou en tant que paramètre d’indicateur de noyau (heure d’exécution). Si vous supprimez le paramètre du Registre, vous devez redémarrer l’ordinateur pour mettre fin au suivi. Si vous désactivez la version d’exécution des paramètres, la trace se termine immédiatement, mais les paramètres de trace sont rétablis dans le Registre lorsque vous arrêtez ou redémarrez l’ordinateur.

Ces exemples montrent comment utiliser les Gflags pour activer et désactiver le suivi des références d’objet. \

Activer le suivi au moment de l’exécution

La commande suivante active le suivi des références d’objet à l’invite de commandes. La commande utilise le paramètre /ko pour activer le suivi de référence d’objet en tant que paramètre d’indicateur de noyau (heure d’exécution). La commande utilise le paramètre /t pour spécifier les balises de pool Tag1 et Fred. Par conséquent, tous les objets créés avec Tag1 ou Fred sont suivis.

gflags /ko /t Tag1;Fred

Étant donné que la commande modifie les paramètres de l’indicateur du noyau (exécution), le suivi des références d’objet démarre immédiatement. La trace inclut tous les objets avec les balises de pool Tag1 ou Fred créées par les processus qui démarrent après l’envoi de la commande.

Gflags répond en imprimant le message suivant :

Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

Ce message indique que le suivi de référence d’objet est activé. « Traces temporaires » indique que tous les enregistrements de la trace sont supprimés lorsque l’objet est détruit. Pour rendre la trace « permanente », utilisez le paramètre /p , qui dirige Windows pour conserver les données de trace jusqu’à ce que le suivi de référence d’objet soit désactivé, ou que l’ordinateur soit arrêté ou redémarré.

Activer le suivi dans le Registre

La commande suivante ajoute une configuration de suivi de référence d’objet au Registre. La trace que vous configurez commence lorsque vous redémarrez l’ordinateur.

La commande utilise le paramètre /ro pour activer le suivi de référence d’objet en tant que paramètre de Registre. La commande utilise le /i pour spécifier le processus de notepad.exe et le paramètre /t pour spécifier les balises de pool Tag1 et Fred. Par conséquent, tous les objets créés par le processus du Bloc-notes avec les balises Tag1 ou Fred pool sont suivis. La commande utilise également le paramètre /p , qui conserve les données de trace jusqu’à ce que le suivi soit désactivé.

gflags /ro /t Tag1;Fred /i Notepad.exe /p

Lorsque vous envoyez la commande, Gflags stocke les informations dans le Registre. Toutefois, étant donné que les paramètres du Registre ne sont pas effectifs tant que vous n’avez pas redémarré l’ordinateur, ce suivi de référence d’objet est configuré, mais n’est pas encore démarré.

Gflags répond en imprimant le message suivant :

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

Le message indique que le suivi de référence d’objet est activé dans le Registre. « Traces permanentes » indique que les données de trace seront conservées jusqu’à ce que vous arrêtiez ou redémarrez l’ordinateur. Le message répertorie également les balises de pool et les noms de fichiers image qui seront suivis.

Afficher la configuration du suivi de référence d’objet

Vous pouvez afficher la configuration de suivi de référence d’objet actuellement effective ou stockée dans le Registre à utiliser lors du redémarrage de l’ordinateur.

Dans cet exemple, il existe une configuration de suivi de référence d’objet stockée dans le Registre et une autre configurée pour l’exécution. La trace au moment de l’exécution commence immédiatement (et remplace tous les paramètres de Registre). Toutefois, si vous redémarrez le système, les paramètres d’exécution sont perdus et les paramètres du Registre de session de suivi des références d’objet deviennent effectifs.

La commande suivante affiche la configuration de suivi de référence d’objet d’exécution. Il utilise le paramètre /ko sans aucun autre paramètre.

gflags /ko
Running Kernel Settings :
Object Ref Tracing Enabled
        Temporary Traces
        Pool Tags: Tag1;Fred
        Process Name: All Processes

Si le suivi de référence d’objet est activé, comme dans cet exemple, les paramètres affichés décrivent une trace en cours.

La commande suivante affiche les données de configuration de suivi de référence d’objet stockées dans le Registre. Il utilise le paramètre /ro sans aucun autre paramètre.

gflags /ro

En réponse, Gflags affiche les données stockées dans le Registre :

Boot Registry Settings :
Object Ref Tracing Enabled
        Permanent Traces
        Pool Tags: Tag1;Fred
        Process Name: Notepad.exe

Si vous avez redémarré l’ordinateur depuis que vous avez ajouté la configuration de suivi de référence d’objet au Registre, les paramètres affichés en réponse à une commande gflags /ro décrivent la trace en cours. Toutefois, si vous n’avez pas encore redémarré ou si vous avez redémarré, mais que vous avez démarré une trace de référence d’objet au moment de l’exécution (/ko), les paramètres stockés dans le Registre ne sont pas actuellement effectifs, mais ils redeviennent effectifs lorsque vous redémarrez le système.

Désactiver le suivi des références d’objet

Lorsque vous désactivez les paramètres de suivi de référence d’objet (indicateur de noyau) d’exécution, la trace s’arrête immédiatement. Lorsque vous désactivez les paramètres de suivi de référence d’objet dans le Registre, la trace s’arrête lorsque vous redémarrez l’ordinateur.

La commande suivante désactive le suivi de référence d’objet au moment de l’exécution. Il utilise le paramètre /d pour désactiver tous les paramètres. Vous ne pouvez pas désactiver les paramètres de manière sélective.

gflags /ko -d

Lorsque la commande réussit, Gflags répond avec le message suivant :

Running Kernel Settings :
Object Ref Tracing Disabled

La commande suivante désactive le suivi de référence d’objet au moment de l’exécution.

La commande suivante désactive les paramètres de suivi des références d’objet dans le Registre. Il utilise le paramètre /d pour désactiver tous les paramètres. Vous ne pouvez pas désactiver les paramètres de manière sélective. Cette commande est effective lorsque vous redémarrez l’ordinateur.

gflags /ro -d

Lorsque la commande réussit, Gflags répond avec le message suivant :

Boot Registry Settings :
Object Ref Tracing Disabled