TTD 堆積物件
描述
TTD 堆積 物件可用來提供追蹤過程中發生的堆積呼叫相關信息。
屬性
每個堆積物件都會有這些屬性。
屬性 | 說明 |
---|---|
動作 | 描述發生的動作。 可能的值為:Alloc、ReAlloc、Free、Create、Protect、Lock、Unlock、Destroy。 |
堆積 | Win32 堆積的句柄。 |
條件式屬性
視堆積物件而定,其可能會有下列一些屬性。
屬性 | 說明 |
---|---|
地址 | 已配置物件的位址。 |
PreviousAddress | 重新配置之前所配置對象的位址。 如果 Address 與 PreviousAddress 不同,則重新配置會導致記憶體移動。 |
大小 | 配置物件的大小和/或要求大小。 |
BaseAddress | 堆積中已配置對象的位址。 它可以代表將在重新配置物件之前釋放的位址(Free)或對象的位址。。 |
旗標 | 意義取決於 API。 |
結果 | 堆積 API 呼叫的結果。 非零表示成功,零表示失敗。 |
ReserveSize | 要保留給堆積的記憶體數量。 |
CommitSize | 堆積的初始認可大小。 |
MakeReadOnly | 非零值表示要求將堆積設為只讀;零值表示堆積應該是讀寫。 |
Children
Object | 描述 |
---|---|
TimeStart | 位置物件,描述配置開始時的位置。 |
TimeEnd | 位置物件,描述配置結尾的位置。 |
使用範例
使用這個 dx (顯示除錯程式物件模型表示式) 命令,使用 -g 選項在方格中顯示堆積記憶體。
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 - - =
輸出可以描述為「標準化數據」,因為有一組代表堆積作業的所選 API。 從適當參數擷取的數據會以統一的方式呈現。
按兩下 [TimeStart] 或 [TimeEnd] 會巡覽至追蹤中的該點。
按下特定專案旁的參數位段,以顯示可用的參數資訊。
dx -r1 @$cursession.TTD.Data.Heap()[2].@"Parameters"
@$cursession.TTD.Data.Heap()[2].@"Parameters"
[0x0] : 0x16c7d780000
[0x1] : 0x280000
[0x2] : 0x20
[0x3] : 0x0
...
增加遞迴 -r 值以顯示其他資訊。