TTD 堆对象

说明

TTD 堆 对象用于提供有关跟踪过程中发生的堆调用的信息。

属性

每个堆对象都将具有这些属性。

properties 说明
操作 描述发生的操作。 可能的值包括:Alloc、ReAlloc、Free、Create、Protect、Lock、Unlock、Destroy。
Win32 堆的句柄。

条件属性

根据堆对象,它可能具有以下一些属性。

properties 说明
地址 已分配对象的地址。
PreviousAddress 重新分配已分配对象的地址。 如果 Address 与 PreviousAddress 不同,则重新分配导致内存移动。
大小 已分配对象的大小和/或请求的大小。
BaseAddress 堆中已分配对象的地址。 它可以表示将在重新分配对象之前释放的地址(Free)或对象的地址。)
Flags 含义取决于 API。
Result 堆 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 值以显示其他信息。

另请参阅

时间旅行调试 - 时间旅行调试对象简介

时间旅行调试 - 概述

dx(显示调试器对象模型表达式)