TTD memóriaobjektumok

Leírás

A TTD Memória egy metódus, amely a beginAddress, az endAddress és a dataAccessMask paramétereket veszi igénybe, és memóriaelérési adatokat tartalmazó memóriaobjektum-gyűjteményt ad vissza.

Paraméterek

Ingatlan Leírás
kezdőCím A memóriaobjektum 0x előtaggal ellátott első címe.
endAddress A 0x előtagú memóriaobjektum zárócíme.
dataAccessMask A dupla idézőjelekben található adatelérési maszk. Ez lehet r az olvasáshoz, a w íráshoz, az e a végrehajtáshoz és a c a módosításhoz.

Gyermekek

Objektum Leírás
Eseménytípus Az esemény típusa. Ez a "MemoryAccess" az összes TTD.Memory objektumhoz.
Szálazonosító A kérést küldő szál operációsrendszer-szálazonosítója.
UniqueThreadId A nyomkövetési szál egyedi azonosítója. A normál szálazonosítók egy folyamat élettartama alatt újra felhasználhatók, de a UniqueThreadIds nem.
TimeStart A memóriahozzáférés helyét leíró pozícióobjektum .
IdőVége A memóriahozzáférés helyét leíró pozícióobjektum . Ez mindig ugyanaz lesz, mint a TTD.Memory objektumok TimeStart értéke.
Hozzáférési típus A hozzáférési típus – Olvasás, Írás vagy Végrehajtás.
IP A memóriahozzáférést biztosító kód utasításmutatója.
Cím A cím, amelyet beolvasnak, megírnak vagy végrehajtanak, majd a [beginAddress, endAddress) tartományba kerül a paraméterek alapján a Memory() művelet során. Vegye figyelembe, hogy az intervallum félig nyitott. Ez azt jelzi, hogy egyik visszaadott eseménynek sem lesz címe egyező endAddress címmel, de lehetnek olyan események, amelyek megfelelnek az endAddress – 1 címnek.
Méret Az olvasási/írási/végrehajtási műveletek mérete bájtban. Ez általában 8 bájt vagy kevesebb lesz. Kódvégrehajtás esetén a végrehajtott utasítás bájtjainak száma.
Érték Az olvasott, írott vagy végrehajtott érték. Végrehajtás esetén az utasítás kódbájtját tartalmazza. Vegye figyelembe, hogy az utasítási bájtok MSB sorrendben vannak felsorolva a szétszerelő által, de LSB sorrendben lesznek tárolva.

Megjegyzések

A TTD-ben a következő hozzáférési típusok engedélyezettek. Memória-lekérdezések:

  • r - olvasás
  • w - írás
  • rw - olvasás/ írás
  • e - végrehajt
  • rwe - olvasás / írás / végrehajtás
  • ec - végrehajtás /módosítás

Vegye figyelembe, hogy ez a függvény számítást végez, ezért egy ideig tart a futtatás.

Használati példa

Ez a példa a nyomkövetésben lévő összes pozíció rácsos megjelenítését mutatja be, ahol a 0x00a4fca0 kezdődő négy bájtnyi memória olvasási hozzáférése történt. Kattintson bármelyik bejegyzésre a memóriahozzáférés minden előfordulásának részletezéséhez.

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

Képernyőkép a memóriaobjektum dx példarács kimenetéről.

A rács bármelyik eseményének TimeStart mezőjére kattintva megjelenítheti az adott esemény adatait.

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

Ha az esemény nyomkövetési pozíciójára szeretne lépni, kattintson a [Time Travel] elemre.

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

Ebben a példában az összes olyan pozíció szerepel a nyomkövetésben, ahol a 0x1bf7d0 időponttól kezdődő négy bájtnyi memória olvasási/írási hozzáféréssel rendelkezik. Kattintson bármelyik bejegyzésre a memóriahozzáférés minden előfordulásának részletezéséhez.

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

Ebben a példában az összes olyan pozíció szerepel a nyomkövetésben, ahol a 0x13a1710 időponttól kezdődő négy bájtnyi memória végrehajtásra/módosításra került. A memóriahozzáférés bármelyik előfordulásához kapcsolódó további információkért kattintson bármelyik előfordulásra.

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

Lásd még:

Time Travel Hibakeresés – Bevezetés a Time Travel hibakeresési objektumaiba

Time Travel Hibakeresés – Áttekintés