Compartir a través de


Objetos de memoria TTD

Descripción

TTD Memory 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 la memoria.

Parámetros

Propiedad Descripción
beginAddress La dirección inicial del objeto de memoria precedida por 0x.
endAddress La dirección final del objeto de memoria precedida por 0x.
dataAccessMask La máscara de acceso a datos contenida entre comillas dobles. Esto puede ser r para leer, w para escribir, e para ejecutar y c para cambiar.

Children

Object Descripción
EventType El tipo de evento. Esto es "MemoryAccess" para todos los objetos TTD.Memory.
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 Un objeto de posición que describe la posición en la que se realizó el acceso a la memoria.
TimeEnd Un objeto de posición que describe la posición en la que se realizó el acceso a la memoria. Este siempre será el mismo que TimeStart para objetos TTD.Memory.
AccessType Tipo de acceso: lectura, escritura o ejecutar.
IP El puntero de instrucción del código que realizó el acceso a la memoria.
Dirección Dirección que se leyó, se escribió en o se ejecutó y estará en el intervalo de [beginAddress, endAddress) desde los parámetros hasta .Memory(). Tenga en cuenta que el intervalo está semiabierto. 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.
Size 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ó.
Valor 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.

Comentarios

Se permiten los siguientes tipos de acceso en las consultas TTD.Memory:

  • r: lectura
  • w: escritura
  • rw: lectura y escritura
  • e: ejecutar
  • rwe: lectura, escritura y ejecución
  • ec: ejecutar y cambiar

Tenga en cuenta que se trata de una función que realiza cálculos, por lo que tarda un poco en ejecutarse.

Uso de ejemplo

Este ejemplo muestra una visualización en 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 obtener información detallada sobre cada incidencia de acceso a la memoria.

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

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

Puede hacer clic en los campos TimeStart en cualquiera de los eventos en la visualización de la 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 del seguimiento en el que se produjo el evento, haga clic en [Viajes en el tiempo].

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

Este ejemplo muestra una visualización en 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 obtener información detallada sobre cada incidencia de 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 en el seguimiento donde se accedió a la ejecución o modificación de los cuatro bytes de memoria a partir de 0x13a1710. Haga clic en cualquier entrada para obtener información detallada sobre cada incidencia 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

Consulte 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