Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Descrição
A memória TTD é um método que usa 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 com 0x. |
| endereço final | O endereço final do objeto de memória precedido com 0x. |
| dataAccessMask | Máscara de acesso a dados contida em aspas duplas. Isso pode ser r para leitura, w para gravação, e para execução e c para alteração. |
Crianças
| Objeto | Descrição |
|---|---|
| Tipo de Evento | O tipo do evento. Este é "MemoryAccess" para todos os objetos de memória TTD. |
| 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 foi feito. |
| TimeEnd | Um objeto de posição que descreve a posição quando o acesso à memória foi feito. Isso sempre será o mesmo que o TimeStart para TTD.Memory objects. |
| Tipo de Acesso | O tipo de acesso – Ler, Gravar ou Executar. |
| IP | O ponteiro de instrução do código que fez o acesso à memória. |
| Endereço | O Endereço que foi lido/gravado em/executado e estará no intervalo de [beginAddress, endAddress) dos parâmetros para . Memory(). Observe que o intervalo é semiaberto. Ou seja, nenhum dos eventos retornados terá um endereço correspondente ao endAddress, mas pode haver eventos correspondentes a endAddress – 1. |
| Tamanho | O tamanho da leitura/gravação/execução em bytes. Normalmente, serão 8 bytes ou menos. No caso de execução de código, é o número de bytes na instrução que foi executada. |
| Valor | O valor que foi lido, gravado ou processado. 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. |
Observações
Os tipos de acesso a seguir são permitidos no TTD. Consultas de memória:
- r - ler
- w – gravar
- rw – leitura/gravação
- e – executar
- rwe - leitura/gravação/execução
- ec – executar /alterar
Observe que essa é uma função que faz a computação, portanto, leva um tempo para ser executada.
Exemplo de Uso
Este exemplo mostra uma visualização em grade de todas as posições no rastreamento em que ocorreu o acesso de leitura aos quatro bytes de memória começando em 0x00a4fca0. Clique em uma entrada para detalhar cada ocorrência de acesso à memória.
dx -g @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")
Você pode clicar nos campos TimeStart em qualquer um dos eventos na exibição da grade, para exibir informações para 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
Para ir para a posição no rastreamento em que o evento ocorreu, clique em [Viagem no Tempo].
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 estão listadas. Clique em qualquer entrada para aprofundar em 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, tiveram acesso de execução/modificação, são listadas. Clique em qualquer ocorrência para explorar 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
Consulte Também
Depuração de viagem no tempo - Introdução à Depuração de objetos de viagem no tempo