Objekty paměti TTD

Popis

TTD Memory je metoda, která přebírá parametry beginAddress, endAddress a dataAccessMask a vrací kolekci paměťových objektů, které obsahují informace o přístupu k paměti.

Parametry

Vlastnictví Popis
beginAddress Počáteční adresa objektu paměti je předcházená 0x.
koncová adresa Koncová adresa objektu paměti, která začíná znaky 0x.
maska přístupu k datům Maska přístupu k datům obsažená v dvojitých uvozovkách. To může být r pro čtení, w pro zápis, e pro provedení a c pro změnu.

Children

Objekt Popis
Typ události Typ události. Toto je "MemoryAccess" pro všechny objekty TTD.Memory.
ThreadId ID vlákna operačního systému vlákna, které provedlo požadavek.
UniqueThreadId Jedinečné ID pro vlákno v rámci trasování. Id běžných vláken se můžou opakovaně používat po celou dobu životnosti procesu, ale uniqueThreadIds nemohou.
Čas začátku Objekt pozice, který popisuje pozici při vytvoření přístupu k paměti.
KonecČasu Objekt pozice, který popisuje pozici při vytvoření přístupu k paměti. To bude vždy stejné jako TimeStart pro objekty paměti TTD.
Typ přístupu Typ přístupu – čtení, zápis nebo spuštění.
IP Ukazatel instrukce kódu, který zpřístupnil přístup k paměti.
Adresa Adresa, která byla čtena / zapisována / vykonávána a bude v rozsahu [beginAddress, endAddress) z parametrů .Memory(). Všimněte si, že interval je polootevřený. To znamená, že žádná z vrácených událostí nebude mít adresu odpovídající endAddress, ale můžou existovat události odpovídající endAddress – 1.
Velikost Velikost čtení/zápisu/vykonání v bajtech. Obvykle to bude 8 bajtů nebo méně. V případě spuštění kódu se jedná o počet bajtů v instrukci, která byla provedena.
Hodnota Hodnota, která byla načtena, zapsána nebo spuštěna. V případě provedení obsahuje bajty kódu pro instrukci. Všimněte si, že příkazové bajty jsou uvedeny v pořadí MSB podle disassembleru, ale budou uloženy v pořadí LSB.

Poznámky

V TTD jsou povoleny následující typy přístupu. Dotazy na paměť:

  • r - číst
  • w - zápis
  • rw – čtení / zápis
  • e – provedení
  • rwe – čtení / zápis / provedení
  • ec - provést /změnit

Všimněte si, že se jedná o funkci, která provádí výpočty, takže spuštění nějakou dobu trvá.

Příklad použití

Tento příklad ukazuje zobrazení mřížky všech pozic v trasování, kde byl proveden přístup pro čtení ke čtyřem bajtům paměti počínajícím od adresy 0x00a4fca0. Kliknutím na libovolnou položku přejdete k podrobnostem o každém výskytu přístupu k paměti.

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

Snímek obrazovky s ukázkovým výstupem mřížky objektu paměti dx

Kliknutím na pole TimeStart v libovolné události v zobrazení mřížky můžete zobrazit informace pro danou událost.

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

Chcete-li přejít na pozici v záznamu, kde došlo k události, klikněte na [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

V tomto příkladu jsou uvedeny všechny pozice v trasování, kde byly přístupné pro čtení nebo zápis čtyři bajty paměti začínající na 0x1bf7d0. Kliknutím na libovolnou položku přejdete k podrobnostem o každém výskytu přístupu k paměti.

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

V tomto příkladu jsou uvedeny všechny pozice v trasování, kde byly čtyři bajty paměti začínající na 0x13a1710 buď spuštěny, nebo změněny. Kliknutím na libovolný výskyt přejdete k podrobnostem a zobrazíte další informace o každém výskytu přístupu k paměti.

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

Viz také

Ladění cestováním časem – úvod k objektům pro ladění časového cestování

Ladění časové – přehled