Поделиться через


Заметки о выпуске отладки по пути времени

Логотип отладки по времени с часовым отображением.

В этом разделе содержатся сведения о новых возможностях отладки временных путешествий.

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 UQXTN2SQXTUN2инструкций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)

См. также

Отладка временных путешествий — обзор

Отладка перемещения по времени — средство записи командной строки