Compartilhar via


Objetos de memória TTD

Descrição

TTD Memory é um método que usa os parâmetros beginAddress, endAddress e dataAccessMask e retorna uma coleção de objetos de memória que contêm informações de acesso à memória.

Parâmetros

Propriedade Descrição
beginAddress O endereço inicial do objeto de memória precedido por 0x.
endAddress O endereço final do objeto de memória precedido por 0x.
dataAccessMask A máscara de acesso a dados contida entre aspas duplas. Pode ser r de read (leitura), w de write (gravação), e de execução e c de change (alteração).

Filhos

Objeto Descrição
EventType O tipo do evento. Este é "MemoryAccess" para todos os objetos TTD.Memory.
ThreadId A ID do thread do sistema operacional do thread que fez a solicitação.
UniqueThreadId Uma ID exclusiva para o thread no rastreamento. As IDs de thread regulares podem ser reutilizadas durante o tempo de vida de um processo, mas UniqueThreadIds, não.
TimeStart Um objeto de posição que descreve a posição quando o acesso à memória ocorreu.
TimeEnd Um objeto de posição que descreve a posição quando o acesso à memória ocorreu. Sempre será o mesmo que o TimeStart para objetos TTD.Memory.
AccessType O tipo de acesso - Leitura, Gravação ou Execução.
IP O ponteiro de instrução do código que fez o acesso à memória.
Address O endereço que foi lido/gravado/executado e estará no intervalo de [beginAddress, endAddress) dos parâmetros para .Memory(). O intervalo está entreaberto. Ou seja, nenhum dos eventos retornados terá um endereço correspondente a endAddress, mas pode haver eventos correspondentes a endAddress – 1.
Tamanho O tamanho da leitura/gravação/execução em bytes. Normalmente, terá até 8 bytes. No caso de execução do código, é o número de bytes na instrução que foi executada.
Valor O valor que foi lido, gravado ou executado. No caso de execução, ele contém os bytes de código para a instrução. Observe que os bytes de instrução são listados na ordem MSB pelo desmontador, mas serão armazenados em valor na ordem LSB.

Comentários

Os seguintes tipos de acesso são permitidos nas consultas de TTD.Memory:

  • r - read
  • w - write
  • rw - read / write
  • e - execute
  • rwe - read / write / execute
  • ec - execute /change

Observe que essa é uma função que faz computação, de modo que leva um tempo para ser executada.

Exemplo de uso

Este exemplo mostra uma tabela com todas as posições no rastreamento em que ocorreu acesso de leitura nos quatro bytes de memória começando em 0x00a4fca0. Clique em qualquer entrada para detalhar cada ocorrência de acesso à memória.

dx -g @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")

Captura de tela da saída de exemplo de tabela de dx do objeto de memória.

Você pode clicar nos campos TimeStart em qualquer um dos eventos na tabela para exibir informações sobre esse evento.

0:000> dx -r1 @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")[16].TimeStart
@$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")[16].TimeStart                 : 5D:113 [Time Travel]
    Sequence         : 0x5d
    Steps            : 0x113

Clique em [Viagem no tempo] para mover para a posição no rastreamento em que o evento ocorreu.

0:000> dx @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")[16].TimeStart.SeekTo()
@$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")[16].TimeStart.SeekTo()
(27b8.3168): Break instruction exception - code 80000003 (first/second chance not available)
Time Travel Position: 5D:113

eax=0000004c ebx=00dd0000 ecx=00a4f89c edx=00a4f85c esi=00a4f89c edi=00b61046
eip=690795e5 esp=00a4f808 ebp=00a4f818 iopl=0         nv up ei pl nz na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000206
690795e5 ffb604040000    push    dword ptr [esi+404h] ds:002b:00a4fca0=00000000

Neste exemplo, todas as posições no rastreamento em que os quatro bytes de memória começando em 0x1bf7d0 foram acessados por leitura/gravação são listadas. Clique em qualquer entrada para detalhar cada ocorrência de acesso à memória.

0:000> dx @$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
@$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")                
    [0x0]           
    [0x1]           
    [0x2]           
    [0x3]           
     ...

Neste exemplo, todas as posições no rastreamento em que os quatro bytes de memória começando em 0x13a1710 foram acessados por execução/alteração são listadas. Clique em qualquer item para obter informações adicionais sobre cada ocorrência de acesso à memória.

0:000> dx -r1 @$cursession.TTD.Memory(0x13a1710,0x13a1714, "ec")[0]
@$cursession.TTD.Memory(0x13a1710,0x13a1714, "ec")[0]                
    EventType        : MemoryAccess
    ThreadId         : 0x1278
    UniqueThreadId   : 0x2
    TimeStart        : 5B:4D [Time Travel]
    TimeEnd          : 5B:4D [Time Travel]
    AccessType       : Execute
    IP               : 0x13a1710
    Address          : 0x13a1710
    Size             : 0x1
    Value            : 0x55

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