Freigeben über


TTD-Heap-Objekte

Beschreibung

TTD-Heap-Objekte werden verwendet, um Informationen zu Heap-Aufrufen zu geben, die im Verlauf einer Ablaufverfolgung auftreten.

Eigenschaften

Jedes Heap-Objekt verfügt über diese Eigenschaften.

Eigenschaft BESCHREIBUNG
Aktion Beschreibt die Aktion, die aufgetreten ist. Mögliche Werte sind: Alloc, ReAlloc, Free, Create, Protect, Lock, Unlock, Destroy.
Heap Der Ziehpunkt für den Win32-Heap.

Bedingte Eigenschaften

Je nach Heap-Objekt kann es einige der unten aufgeführten Eigenschaften aufweisen.

Eigenschaft Beschreibung
Adresse Die Adresse des zugeordneten Objekts.
PreviousAddress Die Adresse des zugeordneten Objekts, bevor es neu zugeordnet wurde. Wenn "Address" nicht mit "PreviousAddress" identisch ist, wurde der Speicher verschoben.
Größe Die Größe und/oder die angeforderte Größe eines zugeordneten Objekts.
BaseAddress Die Adresse eines zugeordneten Objekts im Heap. Sie kann die Adresse darstellen, die freigegeben wird (Frei) oder die Adresse des Objekts, bevor es neu angeordnet wird (ReAlloc.)
Flags Die Bedeutung hängt von der API ab.
Ergebnis Das Ergebnis des Heap-API-Aufrufs. Ungleich Null bedeutet Erfolg und Null bedeutet Fehler.
Reservieren Menge des Speichers, der für den Heap reserviert werden soll.
CommitSize Anfängliche Zugesicherte Größe für den Heap.
MakeReadOnly Ein Wert ungleich Null gibt eine Anforderung an, den Heap schreibgeschützt zu machen; Ein Nullwert gibt an, dass der Heap schreibgeschützt sein soll.

Children

Object Beschreibung
TimeStart Ein Positionsobjekt , das die Position am Anfang der Zuordnung beschreibt.
TimeEnd Ein Positionsobjekt , das die Position am Ende der Zuordnung beschreibt.

Verwendungsbeispiel

Verwenden Sie diesen Dx-Befehl (Ausdruck des Debuggerobjektmodells anzeigen), um den Heapspeicher in einem Raster mithilfe der Option -g anzuzeigen.

0:0:000> dx -g @$cursession.TTD.Data.Heap()
=======================================================================================================================================================
=                          = Action     = Heap          = Address       = Size      = Flags  = (+) TimeStart = (+) TimeEnd = Result = PreviousAddress =
=======================================================================================================================================================
= [0x0] : [object Object]  - Alloc      - 0xaf0000      - 0xb0cfd0      - 0x4c      - 0x0    - FAB:17B1      - FAD:40      -        -                 =
= [0x1] : [object Object]  - Alloc      - 0xaf0000      - 0xb07210      - 0x34      - 0x8    - FB1:9         - FB3:74      -        -                 =
= [0x2] : [object Object]  - Alloc      - 0xaf0000      - 0xb256d8      - 0x3c      - 0x8    - E525:174      - E526:E1     -        -                 =

Die Ausgabe kann als "normalisierte Daten" beschrieben werden, da es einen ausgewählten Satz von APIs gibt, die Heapvorgänge darstellen. Die Daten, die aus den entsprechenden Parametern extrahiert werden, werden einheitlich dargestellt.

Wenn Sie auf "TimeStart" oder "TimeEnd" klicken, navigieren Sie zu diesem Punkt in der Ablaufverfolgung.

Klicken Sie auf das Parameterfeld neben einem bestimmten Eintrag, um verfügbare Parameterinformationen anzuzeigen.

dx -r1 @$cursession.TTD.Data.Heap()[2].@"Parameters"
@$cursession.TTD.Data.Heap()[2].@"Parameters"                
    [0x0]            : 0x16c7d780000
    [0x1]            : 0x280000
    [0x2]            : 0x20
    [0x3]            : 0x0
...    

Erhöhen Sie den Rekursions-r-Wert, um zusätzliche Informationen anzuzeigen.

Weitere Informationen

Debuggen von Zeitreisen – Einführung in Objekte zum Debuggen von Zeitreisen

Zeitreise-Debugging – Überblick

dx (Display Debugger Object Model Expression)