Partilhar via


Objetos de heap TTD

Descrição

Os objetos TTD Heap são utilizados para fornecer informações sobre as chamadas de heap que ocorrem durante um rastreamento.

Propriedades

Cada objeto no heap terá estas propriedades.

Propriedade Descrição
Ação Descreve a ação que ocorreu. Os valores possíveis são: Alloc, ReAlloc, Free, Create, Protect, Lock, Unlock, Destroy.
Heap O identificador para o heap Win32.

Propriedades condicionais

Dependendo do objeto de pilha, ele pode ter algumas das propriedades abaixo.

Propriedade Descrição
Endereço O endereço do objeto alocado.
Endereço Anterior O endereço do objeto alocado antes de ser realocado. Se Address não for o mesmo que PreviousAddress, a realocação fez com que a memória se movesse.
Tamanho O tamanho e/ou tamanho solicitado de um objeto alocado.
Endereço Base O endereço de um objeto alocado no montículo. Ele pode representar o endereço que será liberado (Free) ou o endereço do objeto antes de ser realocado (ReAlloc.)
Bandeiras O significado depende da API.
Resultado O resultado da chamada de API de heap. Um valor diferente de zero indica sucesso, enquanto zero indica fracasso.
ReserveSize Quantidade de memória a reservar para a pilha.
CommitSize Tamanho inicial comprometido para a pilha.
MakeReadOnly A um valor diferente de zero indica uma solicitação para tornar a pilha só de leitura. A um valor zero indica que a pilha deve ser de leitura e escrita.

Children

Objeto Descrição
HoraDeInício Um objeto de posição que descreve a posição no início da alocação.
TempoTerminado Um objeto de posição que descreve a posição no final da alocação.

Exemplo de Utilização

Use este comando dx (Display Debugger Object Model Expression) para mostrar a memória do heap numa grelha usando a opção -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     -        -                 =

A saída pode ser descrita como "dados normalizados" porque há um conjunto escolhido de APIs que representam operações de heap. Os dados que são extraídos dos parâmetros apropriados, são apresentados de maneira uniforme.

Clicar em TimeStart ou TimeEnd leva-o até esse ponto no rastreamento.

Clique no campo de parâmetros ao lado de uma entrada específica, para exibir as informações de parâmetros disponíveis.

dx -r1 @$cursession.TTD.Data.Heap()[2].@"Parameters"
@$cursession.TTD.Data.Heap()[2].@"Parameters"                
    [0x0]            : 0x16c7d780000
    [0x1]            : 0x280000
    [0x2]            : 0x20
    [0x3]            : 0x0
...    

Aumente o valor do -r de recursão para exibir informações adicionais.

Ver também

Depuração Temporal - Introdução aos Objetos de Depuração Temporal

Depuração de Time Travel - Visão Geral

dx (Expressão do Modelo de Objeto do Display Debugger)