Объекты памяти TTD
Описание
Память TTD — это метод, который принимает параметры beginAddress, endAddress и dataAccessMask и возвращает коллекцию объектов памяти, содержащих сведения о доступе к памяти.
Параметры
Свойство | Описание |
---|---|
beginAddress | Начальный адрес объекта памяти с предваряется 0x. |
endAddress | Конечный адрес объекта памяти с предваряется 0x. |
dataAccessMask | Маска доступа к данным, содержащаяся в двойных кавычках. Это может быть r для чтения, w для записи, e для выполнения и c для изменения. |
Дети
Объект | Описание |
---|---|
EventType | Тип события. Это "MemoryAccess" для всех TTD. Объекты памяти. |
ThreadId | Идентификатор потока ОС для потока, который сделал запрос. |
UniqueThreadId | Уникальный идентификатор потока в трассировке. Идентификаторы обычных потоков могут повторно использоваться в течение всего времени существования процесса, но UniqueThreadIds — нет. |
TimeStart | Объект position, описывающий позицию, когда был сделан доступ к памяти. |
TimeEnd | Объект position, описывающий позицию, когда был сделан доступ к памяти. Это всегда будет то же самое, что и timeStart для TTD. Объекты памяти. |
AccessType | Тип доступа — чтение, запись или выполнение. |
IP-адрес | Указатель инструкции кода, который сделал доступ к памяти. |
Адрес | Адрес, который был прочитан, записан в / выполнен и будет находиться в диапазоне [beginAddress, endAddress) от параметров до . Memory(). Обратите внимание, что интервал является полуоткрытым. То есть ни одно из возвращаемых событий не будет иметь адрес, соответствующий endAddress, но могут быть события, соответствующие endAddress – 1. |
Размер | Размер операции чтения, записи и выполнения в байтах. Обычно это значение не превышает 8 байт. В случае выполнения кода это количество байтов в выполненной инструкции. |
Значение | Значение, которое было прочитано, записано или выполнено. В случае выполнения он содержит байты кода для инструкции. Обратите внимание, что байты инструкций перечислены дизассемблером в порядке MSB, но будут храниться в значении в порядке LSB. |
Комментарии
В TTD разрешены следующие типы доступа. Запросы памяти:
- r — чтение
- w — запись
- rw — чтение и запись
- e - execute
- rwe — чтение, запись и выполнение
- ec — execute /change
Обратите внимание, что эта функция выполняет вычисления, поэтому выполнение этой функции занимает некоторое время.
Example Usage (Пример использования)
В этом примере показана сетка, отображаемая все позиции в трассировке, где были доступны четыре байта памяти, начиная с 0x00a4fca0. Щелкните любую запись, чтобы детализировать каждое вхождение доступа к памяти.
dx -g @$cursession.TTD.Memory(0x00a4fca0,0x00a4fca4, "r")
Вы можете щелкнуть поля 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
См. также:
Отладка перемещения по времени — общие сведения об объектах отладки перемещения по времени
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по