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


Настройка отладки Kernel-Mode виртуальной машины вручную с использованием виртуального COM-порта

Средства отладки для Windows поддерживают отладку ядра виртуальной машины. Виртуальная машина может находиться на том же физическом компьютере, что и отладчик или на другом компьютере, подключенном к той же сети. В этом разделе описывается, как настроить отладку виртуальной машины вручную с помощью виртуального COM-порта через KDCOM.

Использование виртуальной сети KDNET является более быстрым вариантом и рекомендуется. Дополнительные сведения см. в Настройка отладки сети виртуальной машины с помощью KDNET.

Настройка целевой виртуальной машины

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

Важный

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

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

    bcdedit /debug в

    bcdedit /dbgsettings serial debugport:nbaudrate:115200

    где n — это номер COM-порта на виртуальной машине.

  2. На виртуальной машине настройте COM-порт для сопоставления с именованным каналом. Отладчик будет подключаться через этот канал. Подробную информацию о том, как создать этот канал, см. в документации вашей виртуальной машины.

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

Запуск сеанса отладки с помощью WinDbg

На хост-компьютере откройте WinDbg от имени администратора. Отладчик должен работать в режиме с повышенными привилегиями при отладке виртуальной машины через последовательный канал. В меню файла выберите Отладка ядра. В диалоговом окне отладки ядра откройте вкладку COM. Установите флажок Канал и флажок Повторное подключение. Для скорости передачи данныхвведите 115200. Для сброса значениявведите 0.

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

\\.\pipe\PipeName.

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

\\ VMHost\pipe\PipeName

Выберите ОК.

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

windbg -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconnect

Если отладчик работает на другом физическом компьютере виртуальной машины, введите следующую команду в окне командной строки.

windbg -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect

Запуск сеанса отладки с помощью KD

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

kd -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconnect

Чтобы выполнить отладку виртуальной машины, работающей на другом физическом компьютере от отладчика, введите следующую команду в окне командной строки.

kd -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect

Параметры

VMHost
Указывает имя компьютера, на котором запущена виртуальная машина.

ИмяТрубы
Указывает имя канала, созданного на виртуальной машине.

сбросы=0
Указывает, что неограниченное количество пакетов сброса можно отправлять в целевой объект при синхронизации узла и целевого объекта. Используйте параметр resets=0 для Microsoft Virtual PC и других виртуальных машин, каналы которых сбрасывают лишние байты. Не используйте этот параметр для VMware или других виртуальных машин, каналы которых не удаляют все лишние байты.

повторное подключение
Приводит к автоматическому отключению отладчика и повторному подключению канала при сбое чтения и записи. Кроме того, если отладчик не находит именованный канал при запуске отладчика, параметр повторное подключение приводит к тому, что отладчик будет ожидать появления канала с именем PipeName. Используйте подключиться заново для виртуального ПК и других виртуальных машин, которые удаляют и создают свои каналы заново во время перезагрузки компьютера. Не используйте этот параметр для VMware или других виртуальных машин, которые сохраняют каналы во время перезагрузки компьютера.

Дополнительные сведения о дополнительных параметрах командной строки см. в разделе параметры Command-Line или параметры WinDbg Command-Line.

Виртуальные машины поколения 2

По умолчанию COM-порты не представлены в виртуальных машинах поколения 2. С помощью PowerShell или WMI можно добавить COM-порты. Чтобы порты COM отображались в консоли менеджера Hyper-V, они должны быть созданы с указанием пути.

Чтобы включить отладку ядра с помощью COM-порта на виртуальной машине поколения 2, выполните следующие действия.

  1. Отключите безопасную загрузку, введя следующую команду PowerShell:

    Set-VMFirmware —vmnameVmName–EnableSecureBoot Off

    где VmName — это имя виртуальной машины.

  2. Добавьте COM-порт на виртуальную машину, введя следующую команду PowerShell:

    Set-VMComPort –VMNameVmName1 \\.\pipe\PipeName

    Например, следующая команда настраивает первый COM-порт на виртуальной машине TestVM для подключения к именованному каналу TestPipe на локальном компьютере.

    Set-VMComPort –VMName TestVM 1 \\.\pipe\TestPipe

  3. После подключения и запуска отладчика остановите и приостановите запуск виртуальной машины, чтобы активировать COM-порты на виртуальной машине. Эмулированные UARTS недоступны для отладки, если для хотя бы одного из них не задано имя канала, и они не могут быть добавлены в горячем режиме.

  4. После обновления изменений конфигурации повторно включите безопасную загрузку.

Дополнительные сведения о виртуальных машинах поколения 2 см. в обзоре виртуальных машин поколения 2.

Замечания

Если целевой компьютер перестал отвечать, остается остановленным из-за предыдущего действия отладки ядра или вы использовали параметр командной строки -b, отладчик немедленно прерывает работу целевого компьютера.

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

Устранение неполадок с брандмауэрами и сетевым доступом

Отладчик (WinDbg или KD) должен иметь доступ через брандмауэр. Это может быть даже для виртуальных последовательных портов, поддерживаемых сетевыми адаптерами.

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

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

брандмауэр Windows

Панель управления можно использовать для разрешения доступа через брандмауэр Windows. Откройте панель управления > системе и безопасности и выберите "Разрешить приложение через брандмауэр Windows". В списке приложений найдите отладчик Windows GUI (символов) и отладчик Windows ядра. Установите флажки, чтобы разрешить этим двум приложениям проходить через брандмауэр. Перезапустите приложение отладки (WinDbg или KD).

Сторонние виртуальные машины

VMWare

Если перезапустить виртуальную машину с помощью средств VMWare (например, кнопки сброса), выйти из WinDbg и перезапустить WinDbg, чтобы продолжить отладку. Во время отладки виртуальной машины VMWare часто использует 100% ЦП.

См. также

настройка отладки сети виртуальной машины с помощью KDNET

Настройка Kernel-Mode Отладки вручную

настройка отладки сети узла виртуальной машины