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

另请参阅

时光穿越调试 - 时光穿越调试对象简介

时光穿越调试 - 概述