Freigeben über


Aufzeichnen einer Heapmomentaufnahme

Windows Performance Recorder (WPR) ermöglicht Heap-Snapshots für bestimmte Prozesse auf dem System.

Dieser Heap-Snapshot unterscheidet sich von der Aufzeichnung der Heap-Analyse, da er eine Snapshot-Ansicht des Heaps erstellt. Beispielsweise speichert ein Heap-Snapshot alle Heap-Zuordnungsinformationen in der Datenbank. Wenn der SingleSnapshot-Befehl ausgeführt wird, exportiert er die Zuordnungsinformationen in den Ablaufverfolgungspuffer. Der Snapshot enthält Zuordnungsinformationen, einschließlich aller Stacks, die erstellt werden, nachdem der Snapshot aktiviert wurde.

So erfassen Sie einen Heap-Snapshot-Trace

  1. Heap-Snapshot-Trace aktivieren Es gibt zwei Möglichkeiten, einen Heap-Snapshot-Trace zu aktivieren: nach Prozessname und nach Prozess-ID.

Das folgende Beispiel verwendet den Prozessnamen:

 wpr -snapshotconfig heap -name heaptest.exe           //query snapshot config
 wpr -snapshotconfig heap -name heaptest.exe enable    //enable snapshot config

Das folgende Beispiel verwendet die Prozess-ID oder PID:

wpr -snapshotconfig heap -pid 8048 enable                //enable snapshot config
  1. Starten Sie die Ablaufverfolgung mit wpr oder wprui

mit wpr:

wpr -start heapsnapshot -filemode                          

Wenn die Option -name zum Aktivieren des Heap-Snapshots verwendet wurde, müssen Sie den Prozess starten, nachdem die Konfiguration aktiviert wurde.

  1. Machen Sie den Heap-Snapshot

Jedes Mal, wenn ein Snapshot ausgelöst wird, wird die Zuordnungsstapeldatenbank in die Ablaufverfolgungspuffer exportiert. Ein einzelner Snapshot (kann mehrfach verwendet werden), zum Beispiel:

 wpr -singlesnapshot heap <pid for foo.exe>

Periodischer Schnappschuss:

 wpr -enableperiodicsnapshot heap <frequency in seconds> <pid for foo.exe>
  1. Deaktivieren Sie den Heap-Snapshot
wpr -stop heapsnapshot.etl
  1. Deaktivieren Sie den Heap-Snapshot
    Sie können den Heap mit der PID oder dem Namen deaktivieren. Hier sind Beispiele für beides.

Verwenden des Namens:

wpr -snapshotconfig heap -name Win32Project1.exe disable

Verwenden von PID:

 wpr -snapshotconfig heap -pid %_PID% disable

Hinweis: Wenn die Option -name verwendet wird, um den Heap-Snapshot zu aktivieren, wird die IFEO-Registrierung intern festgelegt und auf alle neuen Instanzen des Prozesses angewendet. Deaktivieren Sie es mit der SnapshotConfig-Option, wenn der Test abgeschlossen ist, um eine unnötige Heap-Sammlung zu vermeiden. Wenn die CPU-Architektur von Prozess und Betriebssystem nicht übereinstimmt (z. B. Ausführen der Win32-App auf einem 64-Bit-Betriebssystem), verwenden Sie die Namensoption (IFEO).