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


Начало работы с отладкой Windows

В этой статье объясняется, как приступить к отладке Windows с помощью WinDbg и других средств отладки. Вы узнаете, как:

  • Установка отладчика и настройка узлов и целевых систем
  • Настройка среды отладки
  • Основные методы отладки для сценариев режима ядра и пользовательского режима

Заметка: Если вы хотите проанализировать аварийный дамб вместо этого, см. раздел "Анализ файлов аварийного дампа с помощью WinDbg".

Чтобы приступить к отладке Windows, выполните следующие действия.

1. Установка отладчика Windows

Установите WinDbg, чтобы начать отладку приложений и драйверов Windows. Подробные инструкции по установке см. в разделе "Установка WinDbg".

2. Определите хост и целевые системы

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

Хост <--------------------------------------------------> Цель

Скриншот диаграммы, на которой показана двойная стрелка, соединяющая хост и целевые системы отладки.

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

3. Определение типа отладчика: режима ядра или пользовательского режима

Затем необходимо определить, следует ли использовать отладку в режиме ядра или в пользовательском режиме.

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

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

Если ваша цель состоит в отладке драйвера, определите, является ли драйвер драйвером режима ядра или драйвером пользовательского режима. Драйверы модели драйверов Windows (WDM) и Kernel-Mode Driver Framework (KMDF) являются драйверами в режиме ядра. Как показано в названии, драйверы User-Mode Driver Framework (UMDF) являются драйверами пользовательского режима.

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

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

Дальнейшие действия по отладке в режиме ядра

Дальнейшие действия по отладке в пользовательском режиме

4. Выбор среды отладчика

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

5. Определите, как подключить цель и хост

Как правило, вы подключаете целевые и хост-системы с помощью сети Ethernet. Если вы выполняете начальную настройку или у вас нет подключения Ethernet на устройстве, то есть доступные другие варианты сетевого подключения. Дополнительные сведения см. в следующих статьях:

6. Выберите 32-разрядные или 64-разрядные средства отладки

Нужен ли отладчик на 32 или 64 бита, зависит от версии Windows, установленной на целевой или ведущей системе, и от того, отлаживаете ли вы 32-разрядный или 64-разрядный код. Дополнительные сведения см. в разделе Выбор 32-разрядных или 64-разрядных средств отладки.

7. Настройка символов

Чтобы использовать все расширенные функции, которые предоставляет WinDbg, необходимо загрузить соответствующие символы. Если вы неправильно настроите символы, вы получаете сообщения, указывающие, что символы недоступны при попытке использовать функции, зависящие от символов. Дополнительные сведения см. в разделе Символы для отладки Windows.

8. Настройка исходного кода

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

9. Знакомство с операцией отладчика

В разделе «Операция отладчика» этой документации описывается работа отладчика для выполнения различных задач. Например, Сохранение файла журнала в WinDbg описывает, как WinDbg может записывать файл журнала, который записывает сеанс отладки.

10. Знакомство с методами отладки

стандартные методы отладки применяются к большинству сценариев отладки, а примеры включают настройку точек останова, проверку стека вызовов и поиск утечки памяти. специализированные методы отладки применяются к определенным технологиям или типам кода. Примерами являются отладка Plug and Play, отладка KMDF и отладка RPC.

11. Использование ссылочных команд отладчика

При работе с отладчиком можно использовать различные команды отладки. Чтобы получить справку по любой команде во время отладки, используйте .hh команду, за которой следует имя команды.

Примеры:

.hh bp # Get help on breakpoint commands
.hh k # Get help on call stack commands

Полный список доступных команд см. в справочнике по отладчику.

12. Использование расширений отладки для конкретных технологий

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

В этой документации предполагается, что у вас есть некоторые знания о основных внутренних компонентах Windows. Чтобы узнать больше о внутренних компонентах Windows, включая использование памяти, контекст, потоки и процессы, можно просмотреть такие ресурсы, как Внутренние компоненты Windows Павел Yosifovich, Марк Э. Руссинович, Дэвид А. Соломон и Алекс Ионеску.

14. Просмотр дополнительных ресурсов отладки

Другие ресурсы включают следующие книги и видео:

Дальнейшие шаги

Выберите режим отладки, чтобы продолжить:

Отладка в режиме ядра (для драйверов и компонентов ОС):

Отладка в пользовательском режиме (для приложений):

Дополнительные рекомендации по настройке: