다음을 통해 공유


TTD 메모리 개체

설명

TTD 메모리 는 beginAddress, endAddress 및 dataAccessMask 매개 변수를 사용하고 메모리 액세스 정보를 포함하는 메모리 개체의 컬렉션을 반환하는 메서드입니다.

매개 변수

속성 설명
beginAddress 앞에 0x가 있는 메모리 개체의 시작 주소입니다.
endAddress 앞에 0x가 있는 메모리 개체의 끝 주소입니다.
dataAccessMask 큰따옴표에 포함된 데이터 액세스 마스크입니다. 읽기용 r, 쓰기용 w, 실행의 경우 c, 변경의 경우 c일 수 있습니다.

Children

Object 설명
EventType 이벤트의 유형입니다. 이는 모든 TTD에 대한 "MemoryAccess"입니다. 메모리 개체입니다.
ThreadId 요청을 수행한 스레드의 OS 스레드 ID입니다.
UniqueThreadId 추적 전체의 스레드에 대한 고유 ID입니다. 일반 스레드 ID는 프로세스의 수명 동안 다시 사용할 수 있지만 UniqueThreadIds는 사용할 수 없습니다.
TimeStart 메모리 액세스가 이루어진 위치를 설명하는 위치 개체입니다.
TimeEnd 메모리 액세스가 이루어진 위치를 설명하는 위치 개체입니다. 이는 항상 TTD용 TimeStart와 동일합니다. 메모리 개체입니다.
AccessType 액세스 유형 - 읽기, 쓰기 또는 실행입니다.
IP 메모리 액세스를 만든 코드의 명령 포인터입니다.
주소 읽기/쓰기/실행된 주소이며 매개 변수에서 로의 [beginAddress, endAddress) 범위에 포함됩니다. Memory(). 간격이 반쯤 열려 있습니다. 즉, 반환된 이벤트 중 어느 것도 endAddress와 일치하는 주소를 갖지 않지만 endAddress – 1과 일치하는 이벤트가 있을 수 있습니다.
크기 읽기/쓰기/실행의 크기(바이트)입니다. 일반적으로 8바이트 이하입니다. 코드 실행의 경우 실행된 명령의 바이트 수입니다.
읽거나 쓰거나 실행한 값입니다. 실행의 경우 명령에 대한 코드 바이트가 포함됩니다. 명령 바이트는 디스어셈블러에 의해 MSB 순서로 나열되지만 LSB 순서로 값으로 저장됩니다.

설명

다음 액세스 유형은 TTD에서 허용됩니다. 메모리 쿼리:

  • r - 읽기
  • w - 쓰기
  • rw - 읽기/쓰기
  • e - execute
  • rwe - 읽기/쓰기/실행
  • ec - /change 실행

계산을 수행하는 함수이므로 실행하는 데 시간이 걸립니다.

사용 예제

이 예제에서는 추적에서 0x00a4fca0 시작하는 4바이트의 메모리가 읽기 액세스가 발생한 모든 위치의 그리드 표시를 보여 줍니다. 항목을 클릭하여 메모리 액세스가 발생할 때마다 드릴다운합니다.

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 시작하는 4바이트의 메모리가 읽기/쓰기 액세스된 추적의 모든 위치가 나열됩니다. 항목을 클릭하여 메모리 액세스가 발생할 때마다 드릴다운합니다.

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

이 예제에서는 0x13a1710 시작된 4바이트의 메모리가 실행/변경 액세스된 추적의 모든 위치가 나열됩니다. 메모리 액세스의 각 발생에 대한 추가 정보를 보려면 모든 항목을 클릭하여 드릴다운합니다.

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

참고 항목

시간 이동 디버깅 - 시간 이동 디버깅 개체 소개

시간 이동 디버깅 - 개요