Freigeben über


Beispiel 10: Erkennen eines Heapspeicherverlusts in einem Prozess

In diesem Beispiel wird GFlags und Umdh (UMDH, umdh.exe) verwendet, ein Tool, das in Microsoft Debugging Tools für Windows enthalten ist.

So erkennen Sie einen Verlust im Heapspeicher in notepad.exe

  1. Legen Sie das Flag Create user mode stack trace database (ust) für die notepad.exe-Imagedatei fest.

    Der folgende Befehl verwendet GFlags, um das Datenbankflag "Stapelüberwachungsdatenbank im Benutzermodus erstellen" festzulegen. Der Parameter /i wird verwendet, um die Bilddatei und die Ust-Abkürzung für das Flag zu identifizieren.

    gflags /i Notepad.exe +ust 
    

    Als Ergebnis dieses Befehls wird eine Stapelüberwachung im Benutzermodus für alle neuen Instanzen des Editor-Prozesses erstellt.

  2. Legen Sie den Pfad der Symboldatei fest.

    Der folgende Befehl erstellt eine Umgebungsvariable, die den Pfad zum Verzeichnis der Symboldateien speichert:

    set _NT_SYMBOL_PATH=C:\Windows\symbols
    
  3. Starten Sie Editor.

  4. Suchen Sie den Prozessbezeichner (PID) des Editor-Prozesses.

    Sie finden die PID eines ausgeführten Prozesses im Task-Manager oder tasklist (tasklist.exe), einem Tool, das in den Betriebssystemen Windows XP Professional und Windows Server 2003 enthalten ist. In diesem Beispiel ist die Editor-PID 1228.

  5. Führen Sie UMDH aus.

    Der folgende Befehl führt UMDH (umdh.exe) aus. Der Parameter -p: wird verwendet, um die PID anzugeben, die in diesem Beispiel 1228 ist. Der Parameter /f: wird verwendet, um den Namen und den Speicherort der Ausgabedatei für das Heapabbild notepad.dmp anzugeben.

    umdh -p:1228 -f:notepad.dmp 
    

    Als Antwort schreibt UMDH ein vollständiges Speicherabbild aller aktiven Heaps in die Datei notepad.dmp.