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


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

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

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

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

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

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

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

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

Отследить .RUN файлы

Файлы трассировки .RUN можно открыть после записи, используя Файл>Запустить отладку>Открыть файл трассировки.

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

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

C:\Users\User1\Documents

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

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

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

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

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

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

Создание файла .IDX заново

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

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

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

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

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

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

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

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

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

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

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

См. также

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