Bagikan melalui


Objek Memori TTD

Deskripsi

Memori TTD adalah metode yang mengambil parameter beginAddress, endAddress, dan dataAccessMask dan mengembalikan kumpulan objek memori yang berisi informasi akses memori.

Parameter-parameternya

Harta benda Deskripsi
beginAddress Alamat awal objek memori diawali dengan 0x.
Alamat akhir Alamat akhir objek memori diawali dengan 0x.
dataAccessMask Masker akses data terletak dalam tanda kutip ganda. Ini bisa r untuk baca, w untuk tulis, e untuk eksekusi dan c untuk perubahan.

Anak

Objek Deskripsi
Jenis Acara Jenis peristiwa. Ini adalah "MemoryAccess" untuk semua objek memori TTD.Memory.
ThreadId ID utas OS utas yang membuat permintaan.
UniqueThreadId ID unik untuk utas di seluruh jejak. ID utas reguler dapat digunakan kembali selama masa pakai proses tetapi UniqueThreadIds tidak dapat digunakan kembali.
TimeStart Objek posisi yang menjelaskan posisi ketika akses memori dibuat.
TimeEnd Objek posisi yang menjelaskan posisi ketika akses memori dibuat. Ini akan selalu sama dengan TimeStart untuk objek memori TTD.
JenisAkses Jenis akses - Baca, Tulis, atau Jalankan.
IP Penunjuk instruksi dari kode yang melakukan akses memori.
Alamat Alamat yang dibaca / ditulis ke / dijalankan dan akan berada dalam rentang [beginAddress, endAddress) dari parameter ke . Memori(). Perhatikan bahwa interval setengah terbuka. Artinya, tidak ada peristiwa yang dikembalikan yang akan memiliki alamat yang cocok dengan endAddress tetapi mungkin ada peristiwa yang cocok dengan endAddress – 1.
Ukuran Ukuran baca/tulis/eksekusi dalam byte. Ini biasanya akan menjadi 8 byte atau kurang. Jika terjadi eksekusi kode, itu adalah jumlah byte dalam instruksi yang dijalankan.
Nilai Nilai yang dibaca, ditulis, atau dijalankan. Dalam konteks eksekusi, ini berisi byte kode untuk instruksi tersebut. Perhatikan bahwa byte instruksi tercantum dalam urutan MSB oleh pembongkar tetapi akan disimpan dalam nilai dalam urutan LSB.

Komentar

Jenis akses berikut diizinkan dalam kueri memori di TTD.

  • r - baca
  • w - tulis
  • rw - baca/tulis
  • e - jalankan
  • rwe - baca / tulis / eksekusi
  • ec - jalankan /ubah

Perhatikan bahwa ini adalah fungsi yang melakukan komputasi, sehingga perlu waktu cukup lama untuk dijalankan.

Contoh Penggunaan

Contoh ini menunjukkan tampilan kisi dari semua posisi dalam jejak di mana empat byte memori yang dimulai dari 0x00a4fca0 terjadi akses baca. Klik entri apa pun untuk menelusuri paling detail setiap kemunculan akses memori.

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

Cuplikan layar output contoh grid objek memori dx.

Anda dapat mengklik bidang TimeStart di salah satu peristiwa di tampilan kisi, untuk menampilkan informasi untuk peristiwa tersebut.

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

Untuk berpindah ke posisi di jejak peristiwa yang terjadi, klik [Perjalanan Waktu].

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

Dalam contoh ini, semua posisi pada jejak di mana empat byte memori yang dimulai pada 0x1bf7d0 diakses untuk baca/tulis dicantumkan. Klik entri apa pun untuk menelusuri paling detail setiap kemunculan akses memori.

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

Dalam contoh ini semua posisi dalam pelacakan di mana empat byte memori yang dimulai pada 0x13a1710 dijalankan/diubah atau diakses dicatat. Klik kejadian apa pun untuk menelusuri informasi tambahan tentang setiap kemunculan akses memori.

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

Lihat Juga

Time Travel Debugging - Pengantar objek Time Travel Debugging

Pemecahan Masalah Perjalanan Waktu - Gambaran Umum