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


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

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

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

Проблемы с попытками записи процесса

Я получаю сообщение об ошибке: "WinDbg необходимо запустить с повышенными привилегиями для поддержки отладки с путешествием во времени."

Как указано в сообщении, запуск отладчика с повышенными привилегиями является обязательным. Чтобы запустить отладчик с повышенными привилегиями, щелкните правой кнопкой мыши значок WinDbg в меню "Пуск" и выберите "Дополнительно>запустить от имени администратора".

Я установил WinDbg с учетной записью, которая не имеет прав администратора, и я получаю сообщение об ошибке, которое говорит: "WinDbg необходимо запустить с повышенными привилегиями для поддержки Time Travel Debugging".

Повторно установите WinDbg с помощью учетной записи, которая имеет права администратора и использует эту учетную запись при записи в отладчике.

Не удается запустить и записать приложение UWP

Это не поддерживается в настоящее время, но вы можете подключиться и записать уже работающее приложение UWP.

Не удается записать необычный тип процесса — выполнение в другом сеансе, контексте безопасности, учетных данных...

В настоящее время TTD записывает только обычные процессы, которые можно запустить из командной консоли или щелкнув исполняемый файл или ярлык в проводнике Windows.

Не удается успешно записать приложение на компьютере

Если не удается записать ваше приложение, убедитесь, что вы можете записать простой процесс Windows. Например, "ping.exe" или "cmd.exe" — это простые процессы, которые обычно могут быть записаны.

Я не могу успешно записать все на моем компьютере

Запись TTD — это инвазивная технология, которая может повлиять на другие инвазивные технологии, такие как платформы виртуализации приложений, продукты управления информацией, программное обеспечение безопасности или антивирусные продукты.

Дополнительную информацию об известных несовместимостях TTD можно найти в разделе "На что обратить внимание" в Обзор отладки путешествий во времени.

Я отслеживаю приложение и запускаю AppVerifier одновременно, а производительность при повторной отправке трассировки замедляется.

Из-за того, как AppVerifier использует память для проверки приложения, опыт позже при повторном воспроизведении трассировки может быть заметно хуже, чем без AppVerifier. Чтобы повысить производительность, отключите AppVerifier при записи приложения. Если это невозможно, может потребоваться закрыть окно вызова в WinDbg, чтобы повысить производительность.

Проблемы с индексными файлами .IDX

Отладка файла трассировки без файла индекса или с поврежденным или неполным файлом индекса возможна, но не рекомендуется. Файл индекса необходим, чтобы убедиться, что значения памяти, считываемые из отлаживаемого процесса, наиболее точны и для повышения эффективности всех других операций отладки.

Используйте команду !index -status для проверки состояния файла индекса .IDX, связанного с файлом трассировки .RUN.

Если вы можете попытаться восстановить файл индекса, выполнив команду !index -force.

Создание индексного файла .IDX

Если вы подозреваете проблему с файлом индекса, или !index -status сообщает что-либо, кроме 'Файл индекса загружен', воссоздайте его. Для этого можно запустить !index -force. Если это не сработает:

  1. Закройте отладчик.
  2. Удалите существующий файл IDX, он будет иметь то же имя, что и файл трассировки .RUN и находиться в том же каталоге, что и файл .RUN.
  3. Откройте трассировку .RUN-файл в WinDbg. Эта команда !index запустит процесс повторного создания индекса.
  4. Используйте команду, чтобы убедиться, !index -status что индекс трассировки работает.

Убедитесь, что для файла индекса достаточно места в том же расположении, где находится файл трассировки. В зависимости от содержимого записи индексный файл может быть значительно больше, чем файл трассировки, как правило, в порядке в два раза больше.

Проблемы с файлами трассировки .RUN

При возникновении проблем с трассировкой .RUN-файла вы можете получать сообщения об ошибках, например, такие.

Replay and log are out of sync at fallback data. Packet type is incorrect "Packet Type"
Replay and log are out of sync at opaque data. Log had already reached the end
Replay exit thread event does not match up with logged event
Logged debug write values are out of sync with replay

В большинстве случаев все сообщения об ошибках указывают на то, что . Файл трассировки RUN недоступен и должен быть повторно записан.

Повторная запись приложения пользовательского режима

Если возникла определенная проблема с записью приложения в режиме пользователя, может потребоваться попробовать записать другое приложение на одном компьютере или попробовать одно и то же приложение на другом компьютере. Вы можете попробовать и записать другое использование приложения, чтобы узнать, существует ли определенная проблема с записью определенных частей приложения.

При отладке или создании индекса, я вижу сообщения о "событиях схода с рельс".

Возможно, вы увидите такие сообщения:

Derailment event MissingDataDerailment(7) on UTID 2, position 2A550B:108 with PC 0x7FFE5EEB4448 Request address: 0x600020, size: 32

TTD работает путем запуска эмулятора внутри отладчика, который выполняет инструкции отлаживаемого процесса, чтобы реплицировать состояние этого процесса на каждой позиции записи. Сбои происходят, когда этот эмулятор наблюдает некоторое несоответствие между результирующей состоянием и информацией, найденной в файле трассировки. Ошибка, указанная выше, например, ссылается на инструкцию, найденную по адресу 0x7FFE5EEB4448 на позиции 2A550B:108 в трассировке, которая пыталась считать данные из памяти вблизи адреса 0x600020, который отсутствует в записи.

Сходы с рельсов часто вызваны ошибками в рекордере или иногда в эмуляторе, на некоторых записанных инструкциях, расположенных ранее в трассировке.

В большинстве случаев это сообщение об ошибке указывает на то, что файл трассировки .RUN будет иметь разрыв в потоке, который отклонился от курса, начиная с той точки, где это произошло, для неопределённого количества инструкций. Если событие, которое вы пытались исследовать, не произошло в течение этого пробела, трассировка может быть пригодна. Если во время этого разрыва произошло интересующее событие, трассировку нужно перезаписать.

См. также

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

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