TTD 記憶體物件

描述

TTD Memory 是接受 beginAddress、endAddress 和 dataAccessMask 參數的方法,並傳回包含記憶體存取資訊的記憶體物件集合。

參數

屬性 說明
beginAddress 開頭為 0x 的記憶體物件開頭位址。
endAddress 開頭為 0x 的記憶體物件結束位址。
dataAccessMask 雙引號中包含的數據存取遮罩。 這可以是 r 來讀取、w 用於寫入、e 代表 execute 和 c 進行變更。

Children

Object 描述
EventType 事件的類型。 這是所有 TTD 的 「MemoryAccess」。記憶體物件。
ThreadId 發出要求的線程OS線程標識碼。
UniqueThreadId 追蹤中線程的唯一標識碼。 一般線程標識碼可以在進程存留期內重複使用,但 UniqueThreadIds 無法重複使用。
TimeStart 位置物件,描述進行記憶體存取時的位置。
TimeEnd 位置物件,描述進行記憶體存取時的位置。 這一律會與 TTD 的 TimeStart 相同。記憶體物件。
AccessType 存取類型 - 讀取、寫入或執行。
IP 進行記憶體存取之程式代碼的指令指標。
位址 已讀取/寫入/執行位址,且會位於參數到 的 [beginAddress, endAddress] 範圍中。Memory()。 請注意,間隔為半開啟。 也就是說,傳回的事件都不會有位址比對 endAddress,但可能有符合 endAddress – 1 的事件。
大小 讀取/寫入/執行的大小,以位元組為單位。 這通常為8個字節或更少。 在程式代碼執行時,它是所執行指令中的位元元組數目。
已讀取、寫入或執行的值。 在執行時,它會包含指令的程式代碼位元組。 請注意,指令位元組會依反組譯器以 MSB 順序,但會以 LSB 順序儲存在值中。

備註

TTD 中允許下列存取類型。記憶體查詢:

  • r - read
  • w - 寫入
  • rw - 讀取/寫入
  • e - 執行
  • rwe - 讀取/寫入/執行
  • ec - 執行 /change

請注意,這是執行計算的函式,因此需要一段時間才能執行。

使用範例

此範例顯示追蹤中所有位置的方格顯示,其中從0x00a4fca0開始的四個字節記憶體發生讀取存取。 按兩下任何專案,向下切入每個出現的記憶體存取。

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

記憶體物件 dx 範例方格輸出的螢幕快照。

您可以按下方格顯示中任何事件中的 TimeStart 字段,以顯示該事件的資訊。

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

若要移至發生事件的追蹤位置,請按兩下 [時間移動]。

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

在此範例中,追蹤中的所有位置,其中從 0x1bf7d0 開始的四個字節記憶體都已列出讀取/寫入存取。 按兩下任何專案,向下切入每個出現的記憶體存取。

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

在此範例中,追蹤中的所有位置都會列出從0x13a1710開始的四個字節記憶體已執行/變更。 按兩下任何發生專案以向下切入,以取得每次發生記憶體存取的其他資訊。

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

另請參閱

時間移動偵錯 - 時間移動偵錯對象的簡介

時間移動偵錯 - 概觀