Отладка локального Kernel-Mode

Средства отладки для Windows поддерживают отладку локального ядра. Это отладка в режиме ядра на одном компьютере. Иными словами, отладчик работает на том же компьютере, на котором выполняется отладка.

Настройка локальной отладки Kernel-Mode

Сведения о настройке локальной отладки в режиме ядра см. в разделе Настройка локального Kernel-Mode Отладка на одном компьютере вручную.

Запуск сеанса отладки

Использование WinDbg

Откройте WinDbg от имени администратора. В меню Файл выберите Отладка ядра. В диалоговом окне Отладка ядра откройте вкладку Локальные . Нажмите кнопку ОК.

Вы также можете запустить сеанс с WinDbg, открыв окно командной строки от имени администратора и введя следующую команду:

windbg -kl

Использование KD

Откройте окно командной строки с правами администратора и введите следующую команду:

kd -kl

Недоступные команды

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

В частности, нельзя использовать следующие команды:

  • Команды выполнения, такие как g (Go), p (Step), t (Trace), wt (Trace and Watch Data), tb (Trace to Next Branch), gh (Go с обработкой исключений) и gn (Go с исключением не обрабатывается)

  • Команды завершения работы и дампа файла, такие как .crash, .dump и .reboot

  • Команды точки останова, такие как bp, bu, ba, bc, bd, be и bl

  • Регистрация команд отображения, таких как r и варианты

  • Команды трассировки стека, такие как k и варианты

Если вы выполняете отладку локального ядра с помощью WinDbg, все эквивалентные команды меню и кнопки также будут недоступны.

Доступные команды

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

Трудности при выполнении отладки локального ядра

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

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

Драйверы в режиме ядра и операционная система Windows часто отправляют сообщения в отладчик ядра с помощью DbgPrint и связанных функций. Эти сообщения не отображаются автоматически во время отладки локального ядра. Их можно отобразить с помощью расширения !dbgprint .

LiveKD

Средство LiveKD имитирует отладку локального ядра. Это средство создает файл дампа "snapshot" памяти ядра, фактически не останавливая ядро во время выполнения этого snapshot. (Таким образом, snapshot может не отображать ни одного мгновенного состояния компьютера.)

LiveKD не входит в пакет средств отладки для Windows. LiveKd можно скачать с сайта Windows Sysinternals.