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

Логотип отладки перемещения по времени с часами.

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

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

Появляется сообщение об ошибке "WinDbg должен быть запущен с повышенными привилегиями для поддержки отладки по времени"

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

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

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

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

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

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

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

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

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

Я не могу успешно записать что-либо на компьютере

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

Сведения об известных несовместимости TTD см. в разделе "Вещи, на которые следует обратить внимание" статьи Отладка перемещения по времени — обзор .

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

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

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

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

!index -status Используйте команду , чтобы проверить состояние . Файл индекса IDX, связанный с . ЗАПУСК файла трассировки.

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

Повторное воссоздаение . Файл индекса IDX

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

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

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

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

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

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 будет иметь пробел в потоке, который сошел с рельсов, начиная с того момента, когда он сошел с рельсов, для некоторого неопределенного количества инструкций. Если интересующее событие, которое вы пытаетесь отладить, не произошло во время этого разрыва, трассировка может быть пригодна. Если интересующее событие произошло во время этого разрыва, трассировку потребуется повторно записать.

См. также:

Отладка по времени — обзор