TTD-minnesobjekt

Beskrivning

TTD-minne är en metod som tar parametrarna beginAddress, endAddress och dataAccessMask och returnerar en samling minnesobjekt som innehåller information om minnesåtkomst.

Parameterar

Fastighet Beskrivning
startadress Startadressen för minnesobjektet föregås av 0x.
endAdress Slutadressen för minnesobjektet föregås av 0x.
dataAccessMask Dataåtkomstmasken som finns inom dubbla citattecken. Detta kan vara "r" för läsa, "w" för skriva, "e" för utföra och "c" för ändra.

Barn

Objekt Beskrivning
Evenemangstyp Typ av händelse. Det här är "MemoryAccess" för alla TTD.Memory-objekt.
ThreadId Operativsystemets tråd-ID för tråden som gjorde begäran.
UniqueThreadId Ett unikt ID för tråden i spårningen. Vanliga tråd-ID:t kan återanvändas under en processs livslängd, men det kan inte UniqueThreadIds.
TimeStart Ett positionsobjekt som beskriver positionen när minnesåtkomst gjordes.
TidSlut Ett positionsobjekt som beskriver positionen när minnesåtkomst gjordes. Detta kommer alltid att vara samma som TimeStart för TTD-minnesobjekt.
Åtkomsttyp Åtkomsttypen – Läsa, skriva eller köra.
(IP) Instruktionspekaren för koden som gjorde minnesåtkomsten.
Adress Adressen som lästes, skrevs till eller kördes och ligger inom intervallet [beginAddress, endAddress) från parametrarna till .Memory(). Observera att intervallet är halvöppet. Ingen av de returnerade händelserna har alltså en adress som matchar endAddress, men det kan finnas händelser som matchar endAddress – 1.
Storlek Storleken på läs/skriv/kör i byte. Detta är vanligtvis 8 byte eller mindre. När kod körs är det antalet byte i instruktionen som exekverades.
Värde Värdet som lästes, skrevs eller verkställdes. Vid körning innehåller den kodbyte för instruktionen. Observera att instruktionsbytena visas i MSB-ordning av disassemblern men lagras som värde i LSB-ordning.

Anmärkningar

Följande åtkomsttyper tillåts i TTD.Memory-frågor:

  • r – läs
  • w – Skriva
  • rw – läsa/skriva
  • e – exekvera
  • rwe – läsa/skriva/exekvera
  • ec – kör /ändra

Observera att det här är en funktion som gör beräkningar, så det tar en stund att köra.

Exempel på användning

Det här exemplet visar en rutnätsvisning av alla positioner i spårningen där de fyra byte minne som började vid 0x00a4fca0 lästes. Klicka på en post för att öka detaljnivån för varje förekomst av minnesåtkomst.

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

Skärmbild av utdata för minnesobjektet dx example grid.

Du kan klicka på fälten TimeStart i någon av händelserna i rutnätsvisningen för att visa information om händelsen.

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

Om du vill flytta till positionen i spårningen som händelsen inträffade klickar du på [Tidsresa].

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

I det här exemplet visas alla positioner i spårningen där de fyra byte minne som börjar vid 0x1bf7d0 lästes/skrevs. Klicka på en post för att gå in på detaljer om varje förekomst av minnesåtkomst.

0:000> dx @$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")
@$cursession.TTD.Memory(0x1bf7d0,0x1bf7d4, "rw")                
    [0x0]           
    [0x1]           
    [0x2]           
    [0x3]           
     ...

I det här exemplet visas alla positioner i spårningen där de fyra byte minne som börjar vid 0x13a1710 kördes/ändrades. Klicka på en förekomst för att öka detaljnivån för ytterligare information om varje förekomst av minnesåtkomst.

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

Se även

Felsökning av tidsresor – Introduktion till felsökningsobjekt för tidsresor

Felsökning av tidsresande – Översikt