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
- 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
- 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.
- 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>
- Deaktivieren Sie den Heap-Snapshot
wpr -stop heapsnapshot.etl
- 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).