Compartir a través de


Objetos de memoria TTD

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")

Captura de pantalla de la salida de la cuadrícula de ejemplo de dx del objeto de memoria.

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

Depuración de viajes en el tiempo - Información general