Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Descripción
Memoria TTD es un método que toma los parámetros beginAddress, endAddress y dataAccessMask y devuelve una colección de objetos de memoria que contienen información de acceso a memoria.
Parámetros
| Propiedad | Descripción |
|---|---|
| dirección de inicio | Dirección inicial del objeto de memoria precedido de 0x. |
| endAddress | Dirección final del objeto de memoria precedida por 0x. |
| dataAccessMask | Máscara de acceso a datos contenida entre comillas dobles. Puede ser r para lectura, w para escritura, e para ejecutar y c para el cambio. |
Niños
| Objeto | Descripción |
|---|---|
| Tipo de evento | El tipo de evento. Este es "MemoryAccess" para todos los objetos de memoria TTD. |
| ThreadId | El ID del subproceso del sistema operativo del subproceso que realizó la solicitud. |
| UniqueThreadId | Un identificador único para el subproceso en el seguimiento. Los identificadores de subprocesos normales se pueden reutilizar durante la duración de un proceso, pero UniqueThreadIds no. |
| TimeStart | Objeto de posición que describe la posición en la que se realizó el acceso a la memoria. |
| FinTiempo | Objeto de posición que describe la posición en la que se realizó el acceso a la memoria. Esto siempre será la misma que TimeStart para los objetos de memoria TTD. |
| Tipo de acceso | Tipo de acceso: lectura, escritura o ejecución. |
| Protocolo de Internet | Puntero de instrucción del código que hizo el acceso a la memoria. |
| Dirección | La dirección que se leyó, escribió o ejecutó y estará en el intervalo de [beginAddress, endAddress) desde los parámetros a .Memory(). Tenga en cuenta que el intervalo está medio abierto. Es decir, ninguno de los eventos devueltos tendrá una dirección que coincida con endAddress, pero podría haber eventos que coincidan con endAddress – 1. |
| Tamaño | Tamaño de lectura, escritura y ejecución en bytes. Normalmente, será de 8 bytes o menos. En caso de ejecución de código, es el número de bytes de la instrucción que se ejecutó. |
| Importancia | El valor que se leyó, se escribió o se ejecutó. En el caso de ejecución, contiene los bytes de código de la instrucción . Tenga en cuenta que los bytes de instrucción se enumeran en orden MSB por el desensamblador, pero se almacenarán en el valor en orden LSB. |
Observaciones
Los siguientes tipos de acceso están permitidos en las consultas de memoria de TTD.
- r: lectura
- w - escribir
- rw: lectura y escritura
- e - ejecutar
- rwe: lectura, escritura y ejecución
- ec - ejecutar / cambiar
Tenga en cuenta que se trata de una función que realiza el cálculo, por lo que se tarda un tiempo en ejecutarse.
Ejemplo de uso
En este ejemplo se muestra una presentación de cuadrícula de todas las posiciones en el seguimiento donde se produjo el acceso de lectura a los cuatro bytes de memoria que comienzan en 0x00a4fca0. Haga clic en cualquier entrada para explorar en profundidad cada aparición del acceso a la memoria.
dx -g @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")
Puede hacer clic en los campos TimeStart en cualquiera de los eventos de la pantalla de cuadrícula para mostrar información de ese 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 desplazarse a la posición en la traza donde se produjo el evento, haga clic en [Retroceso Temporal].
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
En este ejemplo, se enumeran todas las posiciones del seguimiento donde los cuatro bytes de memoria que comienzan en 0x1bf7d0 fueron accedidos para lectura/escritura. Haga clic en cualquier entrada para explorar en profundidad cada aparición del acceso a la memoria.
0:000> dx @$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
@$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
[0x0]
[0x1]
[0x2]
[0x3]
...
En este ejemplo se enumeran todas las posiciones del seguimiento donde se accedieron los cuatro bytes de memoria, empezando en 0x13a1710, mediante ejecución o modificación. Haga clic en cualquier instancia para profundizar en la información adicional sobre cada ocurrencia de acceso a la memoria.
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
Véase también
Depuración de viajes en el tiempo - Introducción a los objetos de depuración de viajes en el tiempo