Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Descriptif
La mémoire TTD est une méthode qui prend les paramètres beginAddress, endAddress et dataAccessMask et retourne une collection d’objets mémoire qui contiennent des informations d’accès à la mémoire.
Paramètres
| Propriété | Descriptif |
|---|---|
| beginAddress | Adresse de début de l’objet mémoire précédé de 0x. |
| endAddress | L’adresse de fin de l’objet mémoire précédée de 0x. |
| dataAccessMask | Masque d’accès aux données contenu entre guillemets doubles. Il peut s’agir de r pour la lecture, w pour l’écriture, e pour l’exécution et c pour la modification. |
Enfants
| Objet | Descriptif |
|---|---|
| Type d’événement | le type d’événement ; Il s'agit de "MemoryAccess" pour tous les objets mémoire TTD. |
| ThreadId | L’ID de thread du système d’exploitation du thread qui a fait la demande. |
| UniqueThreadId | Un ID unique pour le thread à travers la trace. Les IDs de thread réguliers peuvent être réutilisés au cours de la durée de vie d’un processus mais les UniqueThreadIds ne peuvent pas l’être. |
| TimeStart | Objet position qui décrit la position lors de l’accès à la mémoire. |
| Fin du Temps | Objet position qui décrit la position lors de l’accès à la mémoire. Ce sera toujours le même que le TimeStart pour les objets de mémoire TTD. |
| Type d'accès | Type d’accès : lecture, écriture ou exécution. |
| Protocole Internet (IP) | Le pointeur d'instruction du code qui a effectué l'accès à la mémoire. |
| Adresse | L'adresse qui a été lue, écrite ou exécutée sera dans la plage de [beginAddress, endAddress) des paramètres de .Memory(). Notez que l’intervalle est demi-ouvert. Autrement dit, aucun des événements retournés n’aura une adresse correspondant à endAddress, mais il peut y avoir des événements correspondant à endAddress – 1. |
| Taille | Taille de la lecture/écriture/exécution en octets. Il s’agit généralement de 8 octets ou moins. En cas d’exécution du code, il s’agit du nombre d’octets dans l’instruction exécutée. |
| Valeur | Valeur qui a été lue, écrite ou exécutée. En cas d’exécution, il contient les octets de code pour l’instruction. Notez que les octets d’instruction sont répertoriés dans l’ordre MSB par le désassembleur, mais sont stockés sous forme LSB. |
Remarques
Les types d’accès suivants sont autorisés dans TTD. Requêtes de mémoire :
- r - lecture
- w - écrire
- rw - lecture/écriture
- e - exécuter
- rwe - lecture/ écriture / exécution
- ec - exécuter /changer
Notez qu’il s’agit d’une fonction qui effectue le calcul. Il faut donc un certain temps pour s’exécuter.
Exemple d’utilisation
Cet exemple montre un affichage en grille de toutes les positions dans la trace où les quatre octets de mémoire commençant à 0x00a4fca0 ont fait l'objet d'un accès en lecture. Cliquez sur n’importe quelle entrée pour explorer chaque occurrence de l’accès à la mémoire.
dx -g @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")
Vous pouvez cliquer sur les champs TimeStart dans l’un des événements de la grille pour afficher des informations pour cet événement.
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
Pour accéder à la position dans la trace que l’événement s’est produit, cliquez sur [Voyage dans le temps].
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
Dans cet exemple, toutes les positions de la trace où les quatre octets de mémoire commençant à 0x1bf7d0 ont été accessibles en lecture/écriture sont répertoriés. Cliquez sur n’importe quelle entrée pour explorer chaque occurrence de l’accès à la mémoire.
0:000> dx @$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
@$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
[0x0]
[0x1]
[0x2]
[0x3]
...
Dans cet exemple, toutes les positions de la trace où les quatre octets de mémoire commençant à 0x13a1710 ont été exécutés/modifiés sont répertoriés. Cliquez sur n’importe quelle occurrence pour en savoir plus sur chaque occurrence d’accès à la mémoire.
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
Voir aussi
Débogage de voyage dans le temps - Introduction aux objets de débogage de voyage dans le temps