TTD 堆对象
说明
TTD 堆 对象用于提供有关在跟踪过程中发生的堆调用的信息。
属性
每个堆对象都将具有这些属性。
属性 | 说明 |
---|---|
操作 | 描述发生的操作。 可能的值包括:Alloc、ReAlloc、Free、Create、Protect、Lock、Unlock、Destroy。 |
堆 | Win32 堆的句柄。 |
条件属性
根据堆对象,它可能具有以下一些属性。
属性 | 说明 |
---|---|
地址 | 已分配对象的地址。 |
PreviousAddress | 重新分配之前已分配对象的地址。 如果 Address 与 PreviousAddress 不同,则重新分配会导致内存移动。 |
大小 | 已分配对象的大小和/或请求的大小。 |
BaseAddress | 堆中已分配对象的地址。 它可以表示将释放 (Free) 的地址,也可以表示在 reAlloc. (重新分配之前对象的地址 ) |
Flags | 含义取决于 API。 |
结果 | 堆 API 调用的结果。 非零表示成功,零表示失败。 |
ReserveSize | 要为堆保留的内存量。 |
CommitSize | 堆的初始提交大小。 |
MakeReadOnly | 非零值指示将堆设置为只读的请求;零值指示堆应为读写。 |
子女
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