Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 |
|---|---|
| beginEndereço: | O endereço inicial do objeto de memória precedido de 0x. |
| Endereço final | O endereço final do objeto de memória precedido de 0x. |
| dataAccessMask | A máscara de acesso a dados contida entre aspas duplas. Isso pode ser r para leitura, w para gravação, e para executar e c para mudança. |
Children
| Objeto | Descrição |
|---|---|
| Tipo de Evento | O tipo de evento. Este é "MemoryAccess" para todos os objetos de TTD.Memory. |
| ThreadId | O ID de thread do sistema operacional do thread que fez a solicitação. |
| UniqueThreadId | Um ID exclusivo para o thread através do rastreamento. IDs de thread regulares podem ser reutilizados ao longo da vida útil de um processo, mas UniqueThreadIds não. |
| HoraDeInício | Um objeto position que descreve a posição quando o acesso à memória foi feito. |
| TempoTerminado | Um objeto position que descreve a posição quando o acesso à memória foi feito. Isso sempre será o mesmo que o TimeStart para objetos de memória TTD. |
| Tipo de Acesso | O tipo de acesso - Ler, Escrever 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 / escrito / executado e estará no intervalo de [beginAddress, endAddress) dos parâmetros para a função .Memory(). Note que o intervalo está semiaberto. 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. Isso normalmente será de 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, escrito 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 seguintes tipos de acesso são permitidos em consultas de memória TTD:
- r - ler
- w - escrever
- RW - Leitura/Escrita
- e - executar
- RWE - Ler / Escrever / Executar
- ec - Executar/Alterar
Note que esta é uma função que faz computação, por isso demora algum tempo a executar.
Exemplo de Utilização
Este exemplo mostra uma exibição em grade de todas as posições no rastreamento onde ocorreram acessos de leitura aos 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")
Você pode clicar nos campos TimeStart em qualquer um dos eventos na exibição de 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 onde os quatro bytes de memória a partir de 0x1bf7d0 foram acessados são listados. 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 onde os quatro bytes de memória a partir de 0x13a1710 foram acedidos para execução ou modificação são listadas. Clique em qualquer ocorrência para obter informações detalhadas sobre cada 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
Ver também
Depuração Temporal - Introdução aos Objetos de Depuração Temporal