Инструменты отладки для Windows, как использовать
Обновлено: 21.11.2024
Инструменты отладки для Windows включают несколько инструментов в дополнение к механизму отладки и средам отладки. Эти инструменты находятся в каталоге установки Debugging Tools for Windows.
DumpChk
Проверить файл дампа памяти.
GFlags
Управление ключами реестра и другими настройками.
Убить
Завершить процесс.
Logger и LogViewer
Запись и отображение вызовов функций и других действий программы.
PLMDebug
Используйте отладчик Windows для отладки приложений Windows, которые выполняются в рамках управления жизненным циклом процессов (PLM). С помощью PLMDebug вы можете вручную управлять приостановкой, возобновлением и завершением работы приложения Windows.
Remote Tool
Удаленное управление любой консольной программой, включая KD, CDB и NTSD. См. Удаленная отладка с помощью Remote.exe.
TList
Список всех запущенных процессов.
UMDH
Анализ распределения кучи.
USBView
Отображение хост-контроллеров USB и подключенных устройств.
DbgRpc (Dbgrpc.exe)
Отображение информации о состоянии удаленного вызова процедур Microsoft (RPC). См. раздел Отладка RPC и использование средства DbgRpc.
KDbgCtrl (управление отладкой ядра, Kdbgctrl.exe)
Управление и настройка соединения для отладки ядра. См. Использование KDbgCtrl.
SrcSrv
Исходный сервер, который можно использовать для доставки исходных файлов во время отладки.
SymSrv
Сервер символов, который отладчик может использовать для подключения к хранилищу символов. Сведения о работе с сервером символов см. в разделе Общедоступные символы Microsoft.
SymChk
Сравните исполняемые файлы с файлами символов, чтобы убедиться, что доступны правильные символы.
AgeStore
Удаляет старые записи в нижестоящем хранилище сервера символов или исходного сервера.
DBH
Отображение информации о содержимом файла символов.
PDBCopy
Удаление информации о частных символах из файла символов и управление включением общедоступных символов в файл.
DbgSrv
Сервер процессов, используемый для удаленной отладки. См. Серверы обработки (режим пользователя).
KdSrv
Сервер соединений KD, используемый для удаленной отладки. См. Серверы соединений KD (режим ядра).
DbEngPrx
Ретранслятор (небольшой прокси-сервер), используемый для удаленной отладки. См. Ретрансляторы.
Breakin (Breakin.exe)
Вызывает прерывание пользовательского режима в процессе. Для получения справки откройте окно командной строки, перейдите в каталог установки и введите breakin /?.
List (утилита списка файлов) (List.exe)
Для справки откройте окно командной строки, перейдите в каталог установки и введите list /?.
RTList (Просмотр удаленного списка задач) (Rtlist.exe)
Список запущенных процессов через сервер процессов DbgSrv. Для получения справки откройте окно командной строки, перейдите в каталог установки и введите rtlist /?.
Каталог установки
Каталог установки по умолчанию для 64-разрядной ОС для инструментов отладки — C:\Program Files (x86)\Windows Kits\10\Debuggers\. Если у вас 32-разрядная ОС, вы можете найти папку Windows Kits в папке C:\Program Files. Чтобы определить, следует ли использовать 32-разрядные или 64-разрядные инструменты, см. раздел Выбор 32-разрядных или 64-разрядных инструментов отладки.
WinDbg — это отладчик режима ядра и режима пользователя, входящий в состав средств отладки для Windows. Здесь мы предлагаем практические упражнения, которые помогут вам начать использовать WinDbg в качестве отладчика пользовательского режима.
Информацию о том, как получить средства отладки для Windows, см. в разделе Средства отладки для Windows (WinDbg, KD, CDB, NTSD).
После установки инструментов отладки найдите каталоги установки 64-разрядной (x64) и 32-разрядной (x86) версий инструментов. Например:
- C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
- C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
Запустите Блокнот и подключите WinDbg
Перейдите в каталог установки и откройте WinDbg.exe.
В меню "Файл" выберите "Открыть исполняемый файл". В диалоговом окне «Открыть исполняемый файл» перейдите к папке, содержащей notepad.exe (обычно это C:\Windows\System32). В поле Имя файла введите notepad.exe. Выберите Открыть.
В нижней части окна WinDbg введите в командной строке следующую команду:
Выход примерно такой:
Путь поиска символов сообщает WinDbg, где искать файлы символов (PDB). Отладчику нужны файлы символов для получения информации о модулях кода (имена функций, имена переменных и т. п.).
Введите эту команду, которая указывает WinDbg выполнить первоначальный поиск и загрузку файлов символов:
Чтобы увидеть символы модуля Notepad.exe, введите следующую команду:
Примечание. Если вы не видите никаких выходных данных, введите .reload еще раз.
Чтобы просмотреть символы в модуле Notepad.exe, содержащие main, используйте команду проверки символов, подобную этой, чтобы вывести список модулей, соответствующих маске:
Выход примерно такой:
Чтобы установить точку останова в notepad!wWinMain, введите следующую команду:
Чтобы убедиться, что точка останова установлена, введите следующую команду:
Выход примерно такой:
Чтобы запустить Блокнот, введите следующую команду:
Блокнот работает до тех пор, пока не дойдет до функции WinMain, а затем переходит к отладчику.
Чтобы просмотреть список модулей кода, загруженных в процессе Блокнота, введите следующую команду:
Выход примерно такой:
Чтобы просмотреть трассировку стека, введите следующую команду:
Выход примерно такой:
Чтобы снова запустить Блокнот, введите следующую команду:
Чтобы взломать Блокнот, выберите «Разрыв» в меню «Файл».
Чтобы установить и проверить точку останова в ZwWriteFile, введите следующие команды:
Введите g, чтобы снова запустить Блокнот. В окне «Блокнот» введите текст и выберите «Сохранить» в меню «Файл». Работающий код прерывается, когда дело доходит до ZwCreateFile. Введите k, чтобы увидеть трассировку стека.
В окне WinDbg, слева от командной строки, обратите внимание на номера процессора и потока. В этом примере номер текущего процессора равен 0, а номер текущего потока — 11. Итак, мы смотрим на трассировку стека для потока 11 (который работает на процессоре 0).
Чтобы увидеть список всех потоков в процессе Блокнота, введите эту команду (тильда):
Выход примерно такой:
В этом примере имеется 14 потоков с индексами от 0 до 13.
Чтобы просмотреть трассировку стека для потока 0, введите следующие команды:
Выход примерно такой:
Чтобы выйти из режима отладки и отключиться от процесса Блокнота, введите следующую команду:
Запустите собственное приложение и подключите WinDbg
Предположим, вы написали и создали небольшое консольное приложение.
В этом упражнении предполагается, что созданное приложение (MyApp.exe) и файл символов (MyApp.pdb) находятся в папке C:\MyApp\x64\Debug. Мы также предполагаем, что исходный код приложения находится в C:\MyApp\MyApp и что MyApp.exe скомпилирован на целевой машине.
В меню "Файл" выберите "Открыть исполняемый файл". В диалоговом окне «Открыть исполняемый файл» перейдите в папку C:\MyApp\x64\Debug. В поле Имя файла введите MyApp.exe. Выберите Открыть.
Введите эти команды:
Теперь WinDbg знает, где найти символы и исходный код для вашего приложения. В этом случае местоположение исходного кода не нужно задавать с помощью .srcpath, поскольку символы имеют полные пути к исходным файлам.
Введите эти команды:
Ваше приложение прерывает работу отладчика, когда дело доходит до его основной функции.
WinDbg отображает ваш исходный код и командное окно.
В меню "Отладка" выберите "Пошаговое выполнение" (или нажмите F11). Продолжайте шагать, пока не войдете в MyFunction. Когда вы перейдете к строке y = x/p2 , ваше приложение рухнет и ворвется в отладчик. Вывод примерно такой:
Начните с обзора средств отладки для Windows. Этот набор инструментов включает WinDbg и другие отладчики.
Установить средства отладки для Windows
Вы можете получить средства отладки для Windows как часть комплекта разработки или как отдельный набор инструментов:
Как часть WDK
Инструменты отладки для Windows включены в комплект драйверов Windows (WDK). Чтобы получить WDK, см. Загрузка комплекта драйверов для Windows (WDK).
Как часть Windows SDK
Инструменты отладки для Windows включены в пакет разработки программного обеспечения Windows (SDK). Чтобы загрузить установщик или образ ISO, см. Windows SDK в Центре разработки для Windows.
Как отдельный набор инструментов
Вы можете установить только средства отладки для Windows, без Windows SDK или WDK, запустив установку Windows SDK, а затем выбрав в списке компонентов для установки только средства отладки для Windows (и сняв выделение со всех остальных компонентов). Особенности). Чтобы загрузить установщик или образ ISO, см. Windows SDK в Центре разработки для Windows.
Начало работы с отладкой Windows
Чтобы начать работу с отладкой Windows, см. раздел Начало работы с отладкой Windows.
Чтобы приступить к отладке драйверов режима ядра, см. раздел Отладка универсальных драйверов — пошаговая лабораторная работа (Echo Kernel-Mode). Это пошаговое практическое занятие, в котором показано, как использовать WinDbg для отладки Echo — примера драйвера, использующего платформу драйверов режима ядра (KMDF).
Среды отладки
Если на вашем компьютере установлены Visual Studio и WDK, у вас есть шесть доступных сред отладки. Описание этих сред см. в разделе Среды отладки.
Все эти среды отладки предоставляют пользовательские интерфейсы для одного и того же механизма отладки, реализованного в механизме символического отладчика Windows (Dbgeng.dll). Этот механизм отладки также называется отладчиком Windows, а шесть сред отладки вместе называются отладчиками Windows.
Отладчики Windows
Отладчики Windows могут работать на процессорах x86, x64 или ARM, а также отлаживать код, работающий на тех же архитектурах. Иногда отладчик и отлаживаемый код выполняются на одном компьютере, но иногда отладчик и отлаживаемый код выполняются на разных компьютерах. В любом случае компьютер, на котором работает отладчик, называется главным компьютером, а отлаживаемый компьютер называется целевым компьютером. Отладчики Windows поддерживают следующие версии Windows как для хоста, так и для целевых компьютеров.
- Windows 11 и Windows Server 2022
- Windows 10 и Windows Server 2016
- Windows 8.1 и Windows Server 2012 R2
- Windows 8 и Windows Server 2012
Символы и файлы символов
В файлах символов хранятся различные данные, которые не требуются при запуске исполняемых двоичных файлов, но файлы символов очень полезны при отладке кода. Дополнительные сведения о создании и использовании файлов символов см. в разделе Символы для отладки Windows (WinDbg, KD, CDB, NTSD).
Синие экраны и файлы аварийного дампа
Если Windows перестает работать и отображает синий экран, компьютер был внезапно выключен, чтобы защитить себя от потери данных, и отображает код проверки на наличие ошибок. Дополнительные сведения см. в разделе Проверка ошибок (синие экраны). Вы анализируете файлы аварийного дампа, которые создаются при завершении работы Windows, с помощью WinDbg и других отладчиков Windows. Дополнительные сведения см. в разделе Анализ аварийного дампа с помощью отладчиков Windows (WinDbg).
Инструменты и утилиты
В дополнение к отладчикам средства отладки для Windows включают набор инструментов, полезных для отладки. Полный список инструментов см. в разделе Инструменты, входящие в состав средств отладки для Windows.
Дополнительная документация
Дополнительную информацию об инструментах отладки для Windows см. в разделе Ресурсы по отладке. Дополнительные сведения о новых возможностях отладчика см. в разделе Предварительный просмотр WinDbg — что нового.
В этой статье рассказывается, как начать работу с отладкой Windows. Если вы хотите использовать отладчик для анализа аварийного дампа, см. раздел Анализ файлов аварийного дампа с помощью WinDbg.
Чтобы начать работу с отладкой Windows, выполните задачи, описанные в этой статье.
1. Определите хост и цель
Отладчик работает в хост-системе, а код, который нужно отладить, выполняется в целевой-системе.
Цель хоста
Поскольку во время отладки выполнение инструкций на процессоре обычно останавливают, обычно используются две компьютерные системы. В некоторых ситуациях вы можете использовать виртуальную машину в качестве второй системы. Например, вы можете использовать виртуальный ПК, работающий на том же ПК, что и код, который нужно отлаживать. Однако, если ваш код взаимодействует с низкоуровневым оборудованием, использование виртуального ПК может быть не лучшим подходом. Дополнительные сведения см. в разделе Настройка сетевой отладки виртуальной машины — KDNET.
2. Определите тип: режим ядра или режим пользователя
Затем вам нужно определить, будете ли вы выполнять отладку в режиме ядра или пользовательском режиме.
Режим ядра — это режим доступа к процессору, в котором работают операционная система и привилегированные программы. Код режима ядра имеет разрешение на доступ к любой части системы и не имеет ограничений, как код пользовательского режима. Код режима ядра может получить доступ к любой части любого другого процесса, работающего как в пользовательском режиме, так и в режиме ядра. Большая часть основных функций ОС и многие драйверы аппаратных устройств работают в режиме ядра.
Режим пользователя — это режим, в котором работают приложения и подсистемы на компьютере. Процессы, работающие в режиме пользователя, работают в своих собственных виртуальных адресных пространствах. Им запрещено получать прямой доступ ко многим частям системы, включая системное оборудование, память, которая не была выделена для их использования, и другим частям системы, которые могут нарушить целостность системы. Поскольку процессы, работающие в пользовательском режиме, эффективно изолированы от системы и других процессов пользовательского режима, они не могут вмешиваться в эти ресурсы.
Если вашей целью является отладка драйвера, определите, является ли этот драйвер драйвером режима ядра или драйвером пользовательского режима. Драйверы Windows Driver Model (WDM) и Kernel-Mode Driver Framework (KMDF) являются драйверами режима ядра. Как следует из названия, драйверы User-Mode Driver Framework (UMDF) — это драйверы пользовательского режима.
В некоторых случаях может быть сложно определить, в каком режиме выполняется код. В этом случае вам может потребоваться выбрать один режим и посмотреть, какая информация доступна в этом режиме. Некоторые проблемы требуют использования отладчика как в пользовательском режиме, так и в режиме ядра.
В зависимости от того, в каком режиме вы решите выполнять отладку, вам потребуется по-разному настраивать и использовать отладчики. Некоторые команды отладки работают одинаково в обоих режимах, а некоторые команды работают по-разному в разных режимах.
Информацию об использовании отладчика в режиме ядра см. в следующих статьях:
Информацию об использовании отладчика в пользовательском режиме см. в разделе Начало работы с WinDbg (пользовательский режим).
3. Выберите среду отладчика
WinDbg хорошо работает в большинстве ситуаций, но бывают случаи, когда вам может понадобиться использовать другой отладчик, например консольные отладчики для автоматизации или Visual Studio. Дополнительные сведения см. в разделе Среды отладки.
4. Определите, как соединить цель и хост
Обычно целевая и хост-системы связаны сетью Ethernet. Если вы выполняете подготовительную работу или у вас нет Ethernet-подключения к устройству, доступны другие варианты сетевого подключения. Дополнительные сведения см. в следующих статьях:
5. Выберите 32-разрядные или 64-разрядные инструменты отладки
Какие средства отладки выбрать — 32-разрядные или 64-разрядные — зависит от версии Windows, работающей на целевой и основной системах, а также от того, отлаживаете ли вы 32-разрядный или 64-разрядный код. Дополнительные сведения см. в разделе Выбор 32-разрядных или 64-разрядных средств отладки.
6. Настроить символы
Чтобы использовать все расширенные функции WinDbg, необходимо загрузить соответствующие символы. Если у вас неправильно настроены символы, вы будете получать сообщения о том, что символы недоступны, когда вы пытаетесь использовать функции, зависящие от символов. Дополнительные сведения см. в разделе Символы для отладки Windows (WinDbg, KD, CDB, NTSD).
7. Настроить исходный код
Если вашей целью является отладка собственного исходного кода, вам потребуется настроить путь к исходному коду. Дополнительные сведения см. в разделе Исходный путь.
8. Ознакомьтесь с работой отладчика
В разделе этой документации, посвященном работе отладчика, описывается работа отладчика для различных задач. Например, в разделе Загрузка DLL расширений отладчика объясняется, как загружать расширения отладчика. Дополнительные сведения о работе с WinDbg см. в разделе Отладка с помощью WinDbg.
9. Ознакомьтесь с методами отладки
Стандартные методы отладки применимы к большинству сценариев отладки, и примеры включают установку точек останова, проверку стека вызовов и обнаружение утечки памяти. Специализированные методы отладки применяются к определенным технологиям или типам кода. Примеры включают отладку Plug and Play, отладку KMDF и отладку RPC.
10. Используйте справочные команды отладчика
Со временем вы будете использовать различные команды отладки при работе в отладчике. Используйте команду .hh (открыть файл справки HTML) в отладчике, чтобы отобразить справочную информацию о любой команде отладки. Дополнительные сведения о доступных командах см. в справочнике по отладчику.
11. Используйте расширения отладки для определенных технологий
Существует несколько расширений отладки, обеспечивающих синтаксический анализ структур данных, специфичных для предметной области. Дополнительные сведения см. в разделе Специализированные расширения.
12. Узнайте о связанных внутренних компонентах Windows
Эта документация предполагает знание внутреннего устройства Windows. Чтобы узнать больше о внутреннем устройстве Windows (включая использование памяти, контекст, потоки и процессы), ознакомьтесь с дополнительными ресурсами, такими как Внутреннее устройство Windows Марка Руссиновича, Дэвида Соломона и Алекса Ионеску.
Читайте также: