Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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")
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í