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

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

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

Обзор файла трассировки

Отладка временных путешествий использует следующие файлы для отладки выполнения кода.

  • Файл трассировки содержит запись выполнения кода и имеет . Расширение RUN.

  • Файл индекса обеспечивает быстрый доступ к информации в файле трассировки и имеет . Расширение IDX.

  • Ошибки записи и другие выходные данные записи записываются в файл журнала отладчика.

Трассировки. Запуск файлов

Трассировки. Файлы RUN можно открыть после записи с помощью >файла запуска отладки открытого>файла трассировки.

Снимок экрана: параметры открытия файла с выделенным параметром

Все выходные файлы трассировки хранятся в папке документов пользователей по умолчанию. Например, для User1 файлы TTD будут храниться здесь:

C:\Users\User1\Documents

При запуске записи можно изменить расположение файлов трассировки. Дополнительные сведения см. в статье "Отладка перемещения по времени" — запись.

Последний использованный список файлов позволяет быстро получить доступ к ранее используемым целевым файлам конфигурации. Также перечислены все недавно используемые файлы трассировки или файлы дампа.

Снимок экрана: открытый список файлов с пятью недавно используемыми файлами трассировки .run.

Индекс. Файлы IDX

Индекс. IdX-файл создается для связанной трассировки. Запуск файла автоматически при открытии файла трассировки в WinDbg. Файл индекса можно создать вручную с помощью команды !index. Индекс обеспечивает более быстрый доступ к сведениям трассировки.

Файлы IDX также могут быть большими, как правило, в два раза больше. RUN-файл.

Повторное восстановление . IdX-файл

Вы можете повторно создать . IDX-файл из файла . RUN-файл с помощью !index команды. Дополнительные сведения см. в статье "Отладка по пути времени" — !index (перемещение по времени).

0:0:001> !index
Indexed 3/3 keyframes
Successfully created the index in 49ms.

Общий доступ к трассировки TTD. Запуск файлов

TTD является локальным только и не работает удаленно подключен к другому компьютеру.

Файлы трассировки TTD можно предоставлять другим пользователям, копируя файлы трассировки. RUN-файл. Это может быть удобно для того, чтобы коллега помог вам выяснить проблему. Они не должны устанавливать аварийное приложение или выполнять любую другую связанную настройку, чтобы попытаться воспроизвести проблему. Они могут просто загрузить файл трассировки и отладить приложение, как если бы оно было установлено на своем компьютере.

Компьютер, на котором выполняется воспроизведение трассировки TTD, должен поддерживать все инструкции, используемые на компьютере записи, например инструкции AVX.

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

Teh. Файл IDX не требуется копировать, так как его можно повторно создать с помощью команды !index, как описано выше.

Совет

При совместной работе с другими пользователями передайте все соответствующие позиции трассировки, связанные с проблемой. Сотрудник может использовать !tt x:y команду, чтобы перейти к этой точной точке во времени выполнения кода. Диапазоны позиций времени можно включить в описания ошибок, чтобы отслеживать, где может возникнуть проблема.

Ошибка — файл журнала

Ошибки записи и другие выходные данные записи записываются в файл журнала отладчика. Чтобы просмотреть файл журнала, выберите "Просмотр>журналов".

В этом примере показан текст журнала ошибок при попытке запустить и записать исполняемый файл с именем Foo.exe, который не находится в каталоге C:\Windows.

2017-09-21:17:18:10:320 : Information : DbgXUI.dll : TTD: Output: 
Microsoft (R) TTD 1.01.02
Release: 10.0.16366.1000
Copyright (C) Microsoft Corporation. All rights reserved.
Launching C:\Windows\Foo.exe
2017-09-21:17:18:10:320 : Error : DbgXUI.dll : TTD: Errors: 
Error: Trace of C:\Windows\Foo.exe PID:0 did not complete successfully: status:27
Error: Could not open 'Foo.exe'; file not found.
Error: Corrupted trace dumped to C:\Users\User1\Documents\Foo01.run.err.

Размер файла трассировки

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

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

Факторы размера файла трассировки

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

Следующие факторы могут повлиять на размер файла трассировки:

  • Количество инструкций по коду, выполняемых во всех потоках при записи запущенного приложения или процесса
  • Продолжительность записи приложения или процесса (только так как это влияет на количество записанных инструкций кода)
  • Размер данных памяти, используемых приложением или процессом

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

Правило размера файла трассировки

Файл трассировки увеличивается примерно на 5 МБ до 50 МБ в секунду при записи активного приложения или процесса в зависимости от указанных выше факторов размера файла трассировки.

Файл трассировки не будет расти, когда приложение или процесс записи неактивен (например, при ожидании входных данных).

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

Размер файла индекса

Файл индекса автоматически создается WinDbg при первом открытии трассировки. Он содержит сведения, помогающие отладчику воспроизводить данные трассировки и запроса информации о памяти более эффективно. Его размер обычно составляет от 1 до 2 раз, чем размер файла трассировки. Факторы, влияющие на его размер, аналогичны тем, которые влияют на размер файла трассировки.

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

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

Так как эти факторы похожи на факторы, влияющие на размер файла трассировки, размер файла индекса обычно масштабируется относительно размера файла индекса (поэтому мы оцениваем, что обычно это от 1x до 2x размер файла трассировки).

Что делать, если у меня не будет места на диске?

Файлы трассировки и индекса TTD записываются на диск. В настоящее время для файла трассировки или индекса не существует ограничения максимального размера файла. Файл трассировки увеличивается до прекращения записи или превышения объема доступного места на диске.

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

Недостаточно места на диске во время записи приводит к созданию файла трассировки с неполной записью выполнения кода. Неполный файл трассировки можно открыть в WinDbg, но он может не включать фактическую проблему, если ошибка возникает после отсутствия места на диске при записи файла трассировки.

Обходное решение. Откройте проводник и проверка, если диск (т. е. диск C: диск) свободное место почти равно нулю. Кроме того, просмотрите трассировку (. Файл RUN) в проводник (по умолчанию в папке "Документы") и если не регулярно растет размер, запись может ждать. Нажмите кнопку "Остановить и отладка" в WinDbg, освободить место или сохранить на другой диск и снова начать запись.

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

Обходное решение. Закройте отладчик и удалите любой файл индекса (IDX), который может существовать для трассировки. Освободить достаточно места на диске или переместить файл трассировки на другой диск с достаточным объемом свободного места. Снова откройте трассировку в отладчике и запустите индекс !index, чтобы создать новый, правильный индекс. Индексирование не изменяет исходный файл трассировки (.run), поэтому данные не будут потеряны.

См. также

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