Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Что такое отладка временных путешествий?
Отладка перемещения по времени — это средство, позволяющее записывать трассировку процесса при выполнении, а затем воспроизводить его позже как вперед, так и назад. Отладка с путешествием во времени (TTD) помогает упростить отладку проблем, позволяя вам «перематывать» сеанс отладчика, вместо необходимости воспроизводить проблему, пока не найдете ошибку.
TTD позволяет вам вернуться к времени, чтобы лучше понять условия, которые приводят к ошибке и воспроизвести его несколько раз, чтобы узнать, как лучше всего устранить проблему.
TTD может иметь преимущества перед файлами аварийного дампа, которые часто упускают состояние и путь выполнения, приводящие к конечному сбою.
Если вы не можете решить проблему самостоятельно, вы можете поделиться трассировкой с коллегой, и он сможет посмотреть то же самое, что и вы. Это может позволить более легкое сотрудничество, чем динамическая отладка, поскольку записанные инструкции одинаковы, в то время как адресные позиции и выполнение кода могут отличаться на разных ПК. Вы также можете поделиться определенной точкой во времени, чтобы помочь вашему коллеге выяснить, где начать.
TTD является эффективным и работает, чтобы добавить как можно меньше накладных расходов, так как он фиксирует выполнение кода в файлах трассировки.
TTD включает набор объектов модели данных отладчика, позволяющий запрашивать трассировку с помощью LINQ. Например, можно использовать объекты TTD для поиска при загрузке определенного модуля кода или поиска всех исключений.
Требования
Отладка перемещения по времени интегрирована с WinDbg, обеспечивая простой процесс записи и воспроизведения.
Чтобы использовать TTD, необходимо запустить отладчик с повышенными привилегиями. Установите WinDbg с помощью учетной записи с правами администратора и используйте эту учетную запись при записи в отладчике. Чтобы запустить отладчик с повышенными привилегиями, выберите и удерживайте (или щелкните правой кнопкой мыши) значок WinDbg в меню , а затем выберите "Больше > запуска от имени администратора".
Заметки о выпуске
TTD продолжает развиваться, чтобы получить последние сведения, см. заметки о выпуске отладки с перемещением во времени.
Запись может содержать личную или связанную с безопасностью информацию
Созданный файл трассировки, содержащий запись, может содержать личную или связанную с безопасностью информацию, включая, но не обязательно ограничивается путями к файлам, реестром, памятью или содержимым файла. Точная информация зависит от активности целевого процесса в момент записи. Помните об этом при совместном использовании файлов записи с другими людьми.
служебная программа командной строки записи TTD.exe
Помимо записи трассировок в пользовательском интерфейсе WinDbg, доступна TTD.exe служебная программа командной строки для записи трассировки.
У вас могут быть сценарии, в которых требуется только средство записи командной строки TTD: запись на компьютере без установки отладчика, расширенных сценариев записи, автоматизации тестирования и т. д. В этих сценариях можно установить только средство записи командной строки TTD с помощью URL-адреса. Дополнительные сведения см. в статье "Отладка путешествий во времени" TTD.exe — служебная программа командной строки.
Сравнение средств отладки
В этой таблице перечислены преимущества и минусы различных доступных решений отладки.
Подход | Плюсы | Минусы |
---|---|---|
Динамическая отладка | Знакомый инструмент в знакомой среде, интерактивный опыт, просмотр потока выполнения, возможность изменить целевое состояние. | Нарушает опыт пользователя, может потребовать усилий для повторного воспроизведения проблемы, может повлиять на безопасность, не всегда возможно на производственных системах. При повторном выполнении трудно вернуться с точки сбоя, чтобы определить причину. |
свалки | Никакого кодирования заранее, с низким уровнем вторжения, основанный на триггерах. | Последовательные моментальные снимки или динамические дампы предоставляют простое представление "с течением времени". Накладные расходы, по сути, равны нулю, если они не используются. |
Данные телеметрии и журналы | Легковесный, часто связанный с бизнес-сценариями и действиями пользователей, подходящий для применения в машинном обучении. | Проблемы возникают в непредвиденных путях кода (без телеметрии). Отсутствие глубины данных, которые статически интегрированы в код. |
Отладка с перемещением во времени (TTD) | Отлично подходит для сложных багов, без необходимости предварительного написания кода, автономной повторяемой отладки, удобен для анализа, фиксирует все. | Большие издержки при рекордной скорости. Может собирать больше данных, необходимых. Файлы данных могут стать большими. |
Видеокурс
Дополнительные сведения о TTD см. в этих видео.
Defrag Tools 185 — Ivette и JamesP рассматривают основы TTD и демонстрируют некоторые функции в WinDbg
Инструменты Defrag 186 — Jordi и JCAB демонстрируют ещё больше отличных функций TTD в WinDbg
CppCon (YouTube) - Jordi, Кен и ДжеймсM представили TTD в WinDbg в CppCon 2017
Основы трассировки файла
Размер файла трассировки
Файл трассировки может получить большой размер, и пользователю TTD необходимо убедиться, что есть достаточно свободное место. Если вы записываете программу даже на несколько минут, файлы трассировки могут быстро увеличиваться до нескольких гигабайтов. TTD не задает максимальный размер файлов трассировки, чтобы поддерживать сложные длительные сценарии. Быстрое повторное создание проблемы позволит максимально уменьшить размер файла трассировки.
Файлы трассировки и индекса
Файл трассировки (.run
) сохраняет выполнение кода во время записи.
После остановки записи создается файл индекса (.idx
) для оптимизации доступа к данным трассировки. Файлы индекса также создаются автоматически, когда WinDbg открывает файлы трассировки.
Файлы индекса также могут быть большими, как правило, в два раза больше, чем файл трассировки.
Вы можете повторно создать файл индекса из файла трассировки с помощью !tt.index
команды.
0:000> !tt.index
Successfully created the index in 10ms.
Ошибки записи и другие выходные данные записи записываются в файл журнала WinDbg.
Все выходные файлы хранятся в расположении, настроенном пользователем. Расположение по умолчанию находится в папке документов пользователей. Например, для User1 файлы TTD будут храниться здесь:
C:\Users\User1\Documents
Дополнительные сведения о работе с файлами трассировки см. в статье "Отладка по пути времени — работа с файлами трассировки".
На что обратить внимание
Несовместимость антивируса
Вы можете столкнуться с несовместимостью из-за того, как TTD интегрируется с процессами для их записи. Обычно возникают проблемы с антивирусным или другим системным программным обеспечением, которое пытается отслеживать и теневые вызовы памяти системы. Если возникают проблемы с записью, например недостаточное сообщение о разрешении, попробуйте временно отключить любое антивирусное программное обеспечение.
Другие служебные программы, которые пытаются заблокировать доступ к памяти, также могут быть проблемными, например, набор средств microsoft Enhanced Mitigation Experience Toolkit.
Другим примером среды, которая конфликтует с TTD, будет платформа электронных приложений. В этом случае трассировка может записываться, но также возможна взаимоблокировка или сбой записываемого процесса.
Только в пользовательском режиме
В настоящее время TTD поддерживает только операцию в пользовательском режиме, поэтому трассировка процесса режима ядра невозможна.
Воспроизведение в режиме только для чтения
Вы можете вернуться к времени, но вы не можете изменить историю. Вы можете использовать команды памяти для чтения, но нельзя использовать команды, которые изменяют или записывают в память.
Системные защищенные процессы
Некоторые защищённые процессы в системе Windows, такие как процесс Protected Process Light (PPL), имеют защиту, поэтому TTD не может внедриться в них для записи выполнения кода.
Влияние записи на производительность
Запись приложения или процесса влияет на производительность компьютера. Фактические затраты на производительность зависят от объема и типа кода, выполняемого во время записи. Вы можете ожидать снижения производительности в типичном сценарии записи примерно в 10-20 раз. Иногда не будет заметного замедления пользовательского интерфейса. Но для более ресурсоемких операций, таких как диалоговое окно "Открыть файл", вы увидите влияние записи.
Ошибки файла трассировки
В некоторых случаях могут возникать ошибки файла трассировки. Дополнительные сведения см. в статье "Отладка перемещения по времени" — устранение неполадок.
Расширенные возможности отладки перемещения по времени
Временные шкалы
Временные шкалы — это визуальное представление событий, происходящих во время процесса выполнения. Эти события могут быть точками останова, операциями чтения и записи памяти, вызовами функций и их возвращениями, а также исключениями. Дополнительные сведения о временных шкалах см. в статье WinDbg — Временная шкала.
Поддержка модели данных отладчика
- Встроенная поддержка модели данных — TTD включает поддержку модели данных. Использование запросов LINQ для анализа сбоев приложений может быть мощным инструментом. Окно модели данных в WinDbg можно использовать для работы с расширяемой и просматриваемой версией dx и dx -g, позволяя создавать таблицы с помощью запросов NatVis, JavaScript и LINQ.
Общие сведения о модели данных отладчика см. в статье WinDbg — модель данных. Дополнительные сведения о работе с объектной моделью отладчика TTD см. в статье "Отладка временных путешествий" — общие сведения о объектах отладки временных путешествий.
Поддержка сценариев
- Автоматизация сценариев — поддержка сценариев для JavaScript и NatVis позволяет выполнять автоматизацию исследования проблем. Дополнительные сведения см. в статье Отладка перемещения во времени - автоматизация JavaScript.
Общие сведения о работе с JavaScript и NatVis см. в статье WinDbg — Scripting.
служебная программа командной строки TTD.exe
Доступна программа командной строки TTD.exe для записи трассировок. Дополнительные сведения см. в статье "Отладка перемещения по времени" — TTD.exe служебная программа командной строки.
Поддержка управляемого кода TTD
Расширение отладки SOS (sos.dll), работающее в 64-разрядном режиме, можно использовать для отладки управляемого кода с помощью TTD в WinDbg. Дополнительные сведения см. в разделе Отладка управляемого кода с помощью отладчика Windows.
Начало работы с TTD
Ознакомьтесь с этими разделами, чтобы записать и воспроизвести файл трассировки, а также узнать о работе с файлами трассировки и устранении неполадок.
- Отладка перемещения по времени — запись трассировки
- Отладка перемещения по времени — воспроизведение трассировки
- Отладка перемещения по времени — работа с файлами трассировки
- Отладка временных путешествий — устранение неполадок
- Отладка перемещения по времени — пошаговое руководство по приложению
В этих разделах описывается дополнительная расширенная функциональность отладки с использованием технологии путешествия во времени.