Partager via


Exemple 10 : détection d’une fuite de mémoire de tas dans un processus

Cet exemple utilise GFlags et le tas de vidage en mode utilisateur (UMDH, umdh.exe), un outil inclus dans les outils de débogage Microsoft pour Windows.

Pour détecter une fuite dans la mémoire du tas dans notepad.exe

  1. Définissez l’indicateur Créer une base de données de trace de pile en mode utilisateur (ust) pour le fichier image notepad.exe.

    La commande suivante utilise GFlags pour définir l’indicateur Créer une base de données de trace de pile en mode utilisateur . Il utilise le paramètre /i pour identifier le fichier image et l’abréviation ust de l’indicateur.

    gflags /i Notepad.exe +ust 
    

    À la suite de cette commande, une trace de pile en mode utilisateur est créée pour toutes les nouvelles instances du processus bloc-notes.

  2. Définissez le chemin du fichier de symboles.

    La commande suivante crée une variable d’environnement qui stocke le chemin d’accès au répertoire des fichiers de symboles :

    set _NT_SYMBOL_PATH=C:\Windows\symbols
    
  3. Démarrez le Bloc-notes.

  4. Recherchez l’identificateur de processus (PID) du processus du Bloc-notes.

    Vous trouverez le PID de n’importe quel processus en cours d’exécution à partir du Gestionnaire des tâches ou de la liste des tâches (tasklist.exe), un outil inclus dans les systèmes d’exploitation Windows XP Professionnel et Windows Server 2003. Dans cet exemple, le PID du Bloc-notes est 1228.

  5. Exécutez UMDH.

    La commande suivante exécute UMDH (umdh.exe). Il utilise le paramètre -p: pour spécifier le PID qui, dans cet exemple, est 1228. Il utilise le paramètre /f: pour spécifier le nom et l’emplacement du fichier de sortie pour le vidage du tas, notepad.dmp.

    umdh -p:1228 -f:notepad.dmp 
    

    En réponse, UMDH écrit un vidage complet de tous les tas actifs dans le fichier notepad.dmp.