Compartilhar via


Objetos de heap TTD

Descrição

Os objetos de heap TTD são usados para fornecer informações sobre chamadas de heap que ocorrem ao longo de um rastreamento.

Propriedades

Cada objeto de heap terá essas 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 do heap Win32.

Propriedades condicionais

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

Propriedade Descrição
Address O endereço do objeto alocado.
AnteriorEndereço O endereço do objeto alocado antes de ser realocado. Se Address não for o mesmo que PreviousAddress, a realocação fará com que a memória se mova.
Tamanho O tamanho e/ou o tamanho solicitado de um objeto alocado.
BaseAddress O endereço de um objeto alocado no heap. Ele pode representar o endereço que será liberado (Free) ou o endereço do objeto antes de ser realocado (ReAlloc.)
Sinalizadores O significado depende da API.
Resultado O resultado da chamada de API de heap. Diferente de zero significa sucesso e zero significa fracasso.
Tamanho da reserva Quantidade de memória a ser reservada para o heap.
Tamanho do compromisso Tamanho inicial confirmado para o heap.
TornarReadOnly Um valor diferente de zero indica uma solicitação para tornar o heap somente leitura; Um valor zero indica que o heap deve ser de leitura/gravação.

Filhos

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

Exemplo de uso

Use este comando dx (Display Debugger Object Model Expression) para exibir a memória heap em uma grade 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 extraídos dos parâmetros apropriados são apresentados de maneira uniforme.

Clicar em TimeStart ou TimeEnd o levará 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 de recursão -r para exibir informações adicionais.

Confira também

Depuração de viagem no tempo - Introdução à Depuração de objetos de viagem no tempo

Depuração de viagem no tempo – Visão geral

dx (expressão para exibir modelo de objeto de depurador)