Автоматическая настройка отладки сетевого ядра KDNET

Средства отладки для Windows поддерживают отладку ядра по сети. В этой статье описывается, как настроить автоматическую отладку сети с помощью средства настройки kdnet.exe .

Компьютер, на котором выполняется отладчик, называется главным компьютером, а отлаживаемый — конечным компьютером. Главный компьютер должен работать под управлением Windows 7 или более поздней версии, а целевой компьютер должен работать Windows 8 или более поздней версии.

Определение IP-адреса главного компьютера

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

  2. На хост-компьютере откройте командную строку и введите IPConfig , чтобы отобразить IP-конфигурацию.

  3. В выходных данных команды найдите IPv4-адрес адаптера Ethernet.

...

Ethernet adapter Ethernet:
...

IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
...

  1. Запишите IPv4-адрес сетевого адаптера, который планируется использовать для отладки.

Настройка главного и целевого компьютеров

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

  1. Убедитесь, что средства отладки Windows установлены в хост-системе. Сведения о скачивании и установке средств отладчика см. в статье Средства отладки для Windows.

  2. Найдите файлыkdnet.exe и VerifiedNICList.xml . По умолчанию файлы находятся в следующем расположении:

    C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    

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

  3. На хост-компьютере скопируйте два файла в сетевую папку или на диск с большим пальцем, чтобы они были доступны на целевом компьютере.

  4. На целевом компьютере создайте каталог C:\KDNET и скопируйте в этот каталог файлыkdnet.exe и VerifiedNICList.xml .

    Важно!

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

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

    C:\KDNET>kdnet.exe
    Network debugging is supported on the following NICs:
    busparams=1.0.0, Broadcom NetXtreme Gigabit Ethernet, Plugged in.  
    This Microsoft hypervisor supports using KDNET in guest VMs.
    
  6. Если выходные данные kdnet.exe указывают, что сетевой адаптер в целевом объекте поддерживается, можно продолжить.

  7. Введите следующую команду, чтобы задать IP-адрес хост-системы и создать уникальный ключ подключения. Используйте IP-адрес или имя хост-системы. Выберите уникальный адрес порта для каждой пары "целевой/узел", с которыми вы работаете, в рекомендуемом диапазоне от 50000 до 50039.

    C:\KDNET>kdnet.exe <HostComputerIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
    Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    
  8. Скопируйте возвращенный ключ в блокнот .txt файл.

Подключение WinDbg к целевому объекту для отладки ядра

На хост-компьютере откройте WinDbg. В меню Файл выберите Пункт Отладка ядра. В диалоговом окне Отладка ядра откройте вкладку Сеть . Вставьте номер порта и ключ, сохраненные в Блокноте .txt файле ранее. Щелкните ОК.

Вы также можете запустить сеанс WinDbg, открыв командную строку и введя следующую команду. <YourPort> — это порт, выбранный ранее, а <YourKey> — это ключ, возвращенный kdnet.exe ранее. Вставьте ключ, сохраненный в блокноте .txt файл ранее.

windbg.exe -k -d net:port=<YourDebugPort>,key=<YourKey> 

Необязательный -d параметр, показанный в примере, включает ранний вход. Дополнительные сведения см. в разделе Параметры командной строки WinDbg.

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

Снимок экрана: оповещение Безопасность Windows с выбранными параметрами для разрешения доступа ко всем трем типам сетей.

На этом этапе отладчик ожидает повторного подключения целевого объекта. Текст отображается в командном окне отладчика. Этот текст будет выглядеть примерно так:

Microsoft (R) Windows Debugger Version 1.0.1908.30002 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Using NET for debugging
Opened WinSock 2.0
Waiting to reconnect...

Перезагрузите целевой компьютер

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

shutdown -r -t 0 

После перезапуска целевого компьютера отладчик должен подключиться автоматически.

Советы по устранению неполадок

Отладка приложений должна быть разрешена через брандмауэр

На стороне узла, где работает отладчик, должны быть включены все типы сетей, чтобы разрешить отладчику взаимодействовать с целевым объектом через брандмауэр.

Используйте панель управления, чтобы разрешить доступ через брандмауэр.

  1. Откройте панель управления > Система и безопасность и выберите Разрешить приложение через брандмауэр Windows.

    • (WinDbg) В списке приложений найдите процесс обработчика WinDbg (TCP) (все).

    • (WinDbg (классическая модель)) В списке приложений найдите Символьный отладчик windows GUI и Отладчик ядра Windows.

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

  3. Прокрутите вниз и нажмите кнопку ОК , чтобы сохранить изменения брандмауэра. Перезапустите отладчик.

    Снимок экрана: панель управления конфигурации брандмауэра с символьным отладчиком Windows GUI и приложениями отладчика ядра Windows с включенными всеми тремя типами сети.

Проверка подключения с помощью проверки связи

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

   C:\>Ping <HostComputerIPAddress>

Выбор порта для сетевой отладки

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

Вы можете выбрать любой номер порта от 49152 до 65535. Рекомендуемый диапазон составляет от 50000 до 50039. Выбранный порт открывается отладчиком, работающим на хост-компьютере, для монопольного доступа.

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

Поддерживаемые сетевые адаптеры

Если при выполнении kdnet.exe отображается сообщение "Сетевая отладка не поддерживается ни на одной из сетевых карт на этом компьютере", сетевой адаптер не поддерживается.

Главный компьютер может использовать любой сетевой адаптер, но целевой компьютер должен использовать сетевой адаптер, поддерживаемый средствами отладки для Windows. Список поддерживаемых сетевых адаптеров см. в разделах Поддерживаемые сетевые адаптеры Ethernet для отладки ядра сети в Windows 10 и Поддерживаемые сетевые адаптеры Ethernet для отладки ядра сети в Windows 8.1.

Включение других типов отладки

Начиная с Windows 10 обновления за октябрь 2020 г. (20H2) поддерживаются следующие параметры для включения четырех типов отладки:

Можно указать любое сочетание типов отладки.

Если типы отладки не указаны, отладка ядра включена.

Если включены как гипервизор, так и отладка ядра, порт низкоуровневой оболочки имеет значение <YourDebugPort> + 1.

Пример использования

Используйте параметр - bkw, чтобы включить отладку bootmgr, ядра и winload.

C:\>kdnet.exe <HostComputerIPAddress> <YourDebugPort> -bkw

Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p

Сводка по параметрам типа отладки

Параметр KNDET Описание Эквивалентная команда set
b включает отладку bootmgr bcdedit /bootdebug {bootmgr} on
h включает отладку гипервизора bcdedit /set hypervisordebug on
k включает отладку ядра bcdedit /debug on
w включает отладку winload bcdedit /bootdebug on

Указание параметров шины

Если kdnet не может автоматически определить параметры шины для транспорта, укажите их в командной строке с параметром /busparams , используя этот синтаксис.

kdnet.exe /busparams [b.d.f] [host] [port] [-[b][h][k][w]]

b.d.f указывает параметры шины настраиваемого устройства.

Используйте диспетчер устройств на целевом компьютере, чтобы определить номера шины PCI, устройства и функции для адаптера, который вы хотите использовать для отладки. Для параметров шины введите b. г. f , где b, d и f — номер шины, номер устройства и номер функции адаптера. Эти значения отображаются в диспетчер устройств в разделе Расположение на вкладке Общие.

Пример:

C:\>kdnet.exe /busparams 0.29.7 <HostComputerIPAddress> <YourDebugPort> -bkw

См. также раздел