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