Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Descrizione
La memoria TTD è un metodo che accetta parametri beginAddress, endAddress e dataAccessMask e restituisce una raccolta di oggetti memoria che contengono informazioni sull'accesso alla memoria.
Parametri
| Proprietà | Descrizione |
|---|---|
| beginAddress | Indirizzo iniziale dell'oggetto memoria preceduto da 0x. |
| endAddress | Indirizzo finale dell'oggetto memoria preceduto da 0x. |
| dataAccessMask | Maschera di accesso ai dati contenuta tra virgolette doppie. Può essere r per lettura, w per la scrittura, e per execute e c per la modifica. |
Bambini
| Oggetto | Descrizione |
|---|---|
| TipoDiEvento | Il tipo di evento. Questo è "MemoryAccess" per tutti gli oggetti TTD.Memory. |
| ThreadId | ID thread del sistema operativo del thread che ha effettuato la richiesta. |
| UniqueThreadId | ID univoco per il thread nella traccia. Gli ID thread regolari possono essere riutilizzati per tutta la durata di un processo, ma Non è possibile usare UniqueThreadIds. |
| TimeStart | Oggetto position che descrive la posizione in cui è stato effettuato l'accesso alla memoria. |
| TimeEnd | Oggetto position che descrive la posizione in cui è stato effettuato l'accesso alla memoria. Sarà sempre uguale a TimeStart per gli oggetti TTD.Memory. |
| Tipo di accesso | Tipo di accesso- Lettura, Scrittura o Esecuzione. |
| Protocollo Internet (IP) | Il puntatore all'istruzione del codice che ha eseguito l'accesso alla memoria. |
| Indirizzo | L'indirizzo che è stato letto/scritto in/eseguito e sarà compreso nell'intervallo di [beginAddress, endAddress) dai parametri a . Memory(). Si noti che l'intervallo è semi-aperto. Ciò significa che nessuno degli eventi restituiti avrà un indirizzo endAddress corrispondente, ma potrebbero esserci eventi corrispondenti a endAddress - 1. |
| Misura | Dimensione delle operazioni di lettura/scrittura/esecuzione in byte. Questo in genere sarà di 8 byte o minore. In caso di esecuzione del codice, è il numero di byte nell'istruzione eseguita. |
| Valore | Il valore letto, scritto o eseguito. In caso di esecuzione, contiene i byte di codice per l'istruzione. Si noti che i byte di istruzioni sono elencati nell'ordine MSB dal disassembler, ma verranno archiviati in valore nell'ordine LSB. |
Osservazioni:
I tipi di accesso seguenti sono consentiti in TTD. Query di memoria:
- r - leggi
- w - scrivere
- rw - lettura/scrittura
- e - eseguire
- rwe - lettura-scrittura-esecuzione
- ec - eseguire /cambiare
Si noti che si tratta di una funzione che esegue il calcolo, quindi è necessario un po' di tempo per l'esecuzione.
Esempio di utilizzo
Questo esempio mostra una visualizzazione della griglia di tutte le posizioni nella traccia in cui è stato effettuato l'accesso in lettura ai quattro byte di memoria a partire da 0x00a4fca0. Fare clic su qualsiasi voce per approfondire ogni occorrenza dell'accesso alla memoria.
dx -g @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")
È possibile fare clic sui campi TimeStart in uno qualsiasi degli eventi nella visualizzazione griglia per visualizzare le informazioni per tale 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
Per passare alla posizione nella traccia in cui si è verificato l'evento, fare clic su [Time Travel].
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
In questo esempio vengono elencate tutte le posizioni nella traccia in cui sono elencati i quattro byte di memoria a partire da 0x1bf7d0 a cui è stato eseguito l'accesso in lettura/scrittura. Fare clic su qualsiasi voce per eseguire il drill-down su ogni occorrenza dell'accesso alla memoria.
0:000> dx @$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
@$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
[0x0]
[0x1]
[0x2]
[0x3]
...
In questo esempio sono elencate tutte le posizioni nella traccia in cui i quattro byte di memoria a partire dall'indirizzo 0x13a1710 sono stati eseguiti/modificati. Fare clic su qualsiasi occorrenza per approfondire i dettagli su ogni operazione di accesso alla 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
Vedere anche
Debugging del Viaggio Temporale - Introduzione agli oggetti di Time Travel Debugging