Заметки о выпуске отладки по пути времени
В этом разделе содержатся сведения о новых возможностях отладки временных путешествий.
1.11.429
Это обновление TTD содержит несколько исправлений ошибок, а также некоторые внутренние изменения для повышения надежности.
Примечание. 1.11.410 появилась регрессия в эмуляции инструкции Intel/AMD LODSD. Исправление для этого появится в следующем выпуске.
Исправления:
- Повышение надежности чтения пакетов и других неправильных изменений для повышения надежности.
- Исправлена регрессия при эмуляции инструкции AVX VBROADCAST[I/F]128.
- Исправлен доступ к записи исключений в ARM64 в более новых сборках Windows.
1.11.410
Улучшены специальные возможности. Пользовательский интерфейс хода выполнения теперь правильно масштабируется с изменениями размера текста.
Команда @$cursession.TTD.Calls()
в отладчике теперь поддерживает подстановочные знаки, соответствующие большому количеству функций.
Теперь можно запрашивать большое количество функций (т. е. @$cursession.TTD.Calls("kernel32!*")
).
Автоматизация: новый -onMonitorReadyEvent
параметр командной строки указывает, когда монитор записи (-monitor
коммутатор) готов к записи новых процессов.
Исправления:
- Исправьте некоторые условия гонки при инициализации записывателя.
- Исправьте способ записи системных списков, чтобы точки останова работали правильно.
- Устранение нескольких проблем, связанных с выборочной записью модуля.
Исправления ARM64:
- Исправлена ошибка, предотвращающая запись TTD на обычных ЦП уровня ARM64v8.0.
- Улучшено обмен сообщениями при попытке использовать в ARM64 трассировку процесса x86 или x64.
Исправления AMD/Intel (включает некоторые проблемы, сообщаемые Google):
- Исправлена неправильная эмуляция LODS: вместо отсчета неиспользуемых битов RAX они теперь сохраняются правильно.
- Исправлена эмуляция инструкции pop ax в процессах x86/x64, которая неправильно отсчитывала верхние биты полного регистра (например, "pop ax" очищала верхние биты rax).
- Прямая эмуляция инструкции XGETBV (быстрее).
- Прямая эмуляция всех перемещений AVX512 SIMD (быстрее).
1.11.316
Исправлена регрессия, которая приводила к случайным сбоям при записи программ с длительными непрерывными последовательности инструкций с большим объемом данных.
Исправления ARM64:
- Запись в процессах ARM64 с включенной функцией PAC теперь поддерживается.
- Исправлены инструкции ANDS и TST, которые не смогли очистить флаги переноски и переполнения.
Исправления AMD/Intel:
- Исправлена ошибка, из-за которой TTD неправильно эмулировал "xchg r8,rax" и "xchg r8w", ax" в качестве NOP.
1.11.304
TTD теперь реализует и публикует общедоступный API для управления записью из динамического записанного процесса. Документация и пример можно найти в GitHub.
Теперь TTD может внедрить себя с записью, отключенной с помощью нового -recordMode
коммутатора. По умолчанию TTD использует -recordMode Automatic
, что приводит к записи всех потоков. Если -recordMode Manual
указано, TTD внедряется в целевой процесс, но не записывает ничего, пока не будет сказано сделать это через вызов API.
Запись теперь может быть ограничена определенным набором модулей с помощью коммутатора -module
. В некоторых сценариях это может привести к значительно более быстрой записи и меньшим файлам трассировки. Можно указать несколько -module
коммутаторов.
Теперь в дистрибутив включены соответствующие компоненты записи и воспроизведения. В случае несовместимости между отладчиком и записью командной строки или ошибкой воспроизведения компоненты воспроизведения можно скопировать в отладчик в качестве обходного решения, пока не будет выпущен новый отладчик.
Расположение установленного файла можно найти в PowerShell, выполнив следующие действия.
ls (Get-AppxPackage | where Name -eq 'Microsoft.TimeTravelDebugging').InstallLocation
Добавлено
- Добавление переключателя -recordmode для включения внедрения без автоматической записи (1.11.296)
- Добавление переключателя -module и использование для создания конфигурации SR (1.11.291)
- Пользовательские данные проекта, записанные API в процессе, в модель данных (1.11.286)
- Добавьте новый TTDLiveRecorder.dll и подключите его вместе с TTDRecordCPU.dll (1.11.283)
- Добавление компонентов воспроизведения в MSIX и исправление поиска пакета SDK (1.11.265)
Изменено
ничего
Фиксированный
- Обход ошибки в сериализаторе JSON nlohmann, который используется в некоторых внутренних инструментах (1.11.281)
- Внесли исправление в эту библиотеку, которая станет доступна в будущем выпуске.
- Настройте выравнивание строк, чтобы избежать редкой ошибки CRT (1.11.279)
- Сообщается и исправлено в базах кода VS и OS.
- Несколько небольших исправлений из отчетов о сбоях Уотсона (1.11.276)
- Исправлена регрессия, которая может привести к повреждению файла трассировки в некоторых случаях (1.11.264)
Известные проблемы
- В ARM64 компилятор не может вызывать ряд функций высокой частоты, которые в крайних случаях могут привести к тому, что запись не будет свободного места в стеке и завершается сбоем.
1.11.261
К заметным изменениям в этом выпуске относятся следующие:
- [ARM64] Исправлено поведение ,
SQXTN2
иTRN1
XTN2
UQXTN2
SQXTUN2
инструкцийSXTL
, когда целевой регистр используется в качестве источника. - [ARM64] Исправлена проблема, из-за которой отладчик отображал регистры SIMD со своими более низкими 64-разрядными дубликатами в высокие 64-разрядные.
- [AMD64] Исправления эмуляции AVX512 для процессоров AMD Zen4 (регистры повреждены).
Изменено
- Реализуйте новую систему управления версиями специально для эмулятора. (1.11.260)
Фиксированный
- Исправьте неисправные инструкции ARM64, в которых регистр назначения также используется в качестве источника. (1.11.261)
- Исправьте обходное решение Zen4 для прямого возврата в эмулятор. (1.11.222)
1.11.202
Этот выпуск устраняет ряд проблем, возникающих при запуске служб записи или мониторинга с помощью коммутатора -monitor
. Она также удаляет поддержку записи ARM32 из продукта.
Изменено
- Уменьшите двоичный размер, связав компоненты TTD с UCRT в виде библиотеки DLL. (1.11.191)
Фиксированный
- Исправлена запись служб. (1.11.193)
- Устранение нескольких проблем при использовании -monitor. (1.11.189)
- Исправлена рамка стека функции, которая сохраняет нелетучие при выполнении резервных копий на x64 (1.11.188)
- Повторное буферизация выходных данных для TTD (1.11.187)
- Исправлена обработка дескриптора групповой политики в ProcessMonitorServer (1.11.179)
Удаленные
- Удаление кода записи ARM32 из репозитория (1.11.198)
1.11.173
Этот выпуск повышает видимость определенных сообщений об ошибках, извлекая их из файла out и печатая их в консоли. Он также устраняет редкий сбой во время воспроизведения трассировки.
Изменено
- Извлечение и печать сообщений об ошибках из ФАЙЛА OUT (1.11.173)
Фиксированный
- Исправьте конфликт файлов при чтении файла out из отдельного процесса. (1.11.171)
- Исправьте редкий сбой во время воспроизведения трассировки. (1.11.166)
1.11.163
В этом выпуске добавлена поддержка записи процессов x86 на компьютерах x64.
Изменено
- Исправлена запись x86 с установкой x64 TTD (1.11.163)
Фиксированный
- Очистка EULA (1.11.161)
1.11.159
Этот выпуск является первым общедоступным выпуском средства записи командной строки. Наряду с несколькими изменениями, необходимыми для включения общедоступного выпуска средства записи командной строки, этот выпуск также включает ряд исправлений ошибок, включая несколько исправлений в эмулятор ЦП.
Новый -timestampFileName
коммутатор включает создание файла run на основе метки времени. Это полезно при записи большого количества экземпляров одного и того же процесса и требуется свести к минимуму время запуска записи.
Изменено
- Выберите режим внедрения по умолчанию во время выполнения, на основе которого используется трассировщик (1.11.156)
- Добавьте переключатель для включения создания файла run на основе метки времени (1.11.155)
- Добавление EULA и
-accepteula
в TTD (1.11.154) - Добавление ProcLaunchMon.sys в MSIX (1.11.153)
- Создание на арку MSIX и MSIXBUNDLE (1.11.152)
- Исправьте ряд проблем, которые возникли при тестировании TTD, созданной с помощью Clang. (1.11.146)
- Исправления clang для TTDAnalyze (1.11.144)
Фиксированный
- Ознакомьтесь с отзывом о appinstaller / общедоступном выпуске (1.11.159)
- Отзыв rc (1.11.157)
- Избегайте корзины регистра "Ноль", инициализировав RegisterInfo, чтобы указать приемник. (1.11.149)
- Исправьте инструкцию TST с помощью немедленного и усовершенствования модульного теста, чтобы охватить его и многое другое. (1.11.148)
- Консолидация решения о защищенном процессе и отключение использования защищенного процесса (1.11.147)
1.11.138
Изменено
- Создание средства записи MSIX (1.11.138)
- Исправьте все проблемы, чтобы Clang смог создать TTD. (1.11.137)
- Введите -monitor X как способ записи процесса при запуске (1.11.116)
Фиксированный
- Исправление эмуляции ARM64 CMP ZR (1.11.128)
- Исправлена эмуляция AVX512 на процессорах AMD Zen4 (1.11.127)
- Исправлен механизм использования TTD для поиска файлов для определенного ЦП (1.11.121)
- Исправлена регрессия x86 TTD (TTDRecordCPU.dll не удалось загрузить) (1.11.110)
- Исправлено возвращение к собственному пути в ARM64, чтобы не корзина X28 (1.11.109)
См. также
Отладка временных путешествий — обзор
Отладка перемещения по времени — средство записи командной строки