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