共用方式為


TTD 記憶體物件

說明

TTD Memory 是一個採用 beginAddress、endAddress 和 dataAccessMask 參數的方法,並以帶回包含記憶體存取資訊的記憶體物件集合。

參數

房產 說明
開始位址 記憶體物件的開頭位址以 0x 開頭。
endAddress (結束位址) 記憶體物件的結束位址,前面是 0x。
dataAccessMask 資料存取遮罩包含在雙引號中。 這可以是 r 代表讀取,w 代表寫入,e 代表執行,c 代表變更。

孩子

物體 說明
事件類型 事件的類型。 這是所有 TTD.Memory 物件的「MemoryAccess」。
ThreadId 發出要求的線程OS線程標識碼。
UniqueThreadId 追蹤中線程的唯一標識碼。 一般線程標識碼可以在進程存留期內重複使用,但 UniqueThreadIds 無法重複使用。
TimeStart 描述在記憶體存取時的位置物件。
TimeEnd 用於描述記憶體存取時的位置物件。 這將始終與 TTD.Memory 物件的 TimeStart 相同。
存取類型 存取類型 - 讀取、寫入或執行。
IP 進行記憶體存取的程式碼的指令指標。
位址 讀取/寫入/執行的位址將位於由參數傳遞至.Memory()的[beginAddress, endAddress)範圍內。 請注意,這個區間是半開放區間。 也就是說,傳回的事件都不會有符合 endAddress 的位址,但可能有符合 endAddress – 1 的事件。
大小 讀取/寫入/執行的大小,以位元組為單位。 這通常是 8 個位元組或更少。 在執行程式碼的情況下,它是執行指令中的位元組數。
價值觀 讀取、寫入或執行的值。 在執行的情況下,它包含指令的代碼位元組。 請注意,指令位元組會由反組譯程式以 MSB 順序列出,但會以 LSB 順序儲存在值中。

備註

在 TTD.Memory 查詢中允許下列存取類型:

  • r - 讀取
  • w - 寫入
  • rw - 讀取/寫入
  • e - 執行
  • RWE - 讀取/寫入/執行
  • ec - 執行 /變更

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

範例使用方式

此範例顯示一個網格,其中顯示了追蹤中的所有位置,這些位置是從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

另請參閱

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

時間移動偵錯 - 概觀