Автоматическая настройка отладки сетевого ядра KDNET
Средства отладки для Windows поддерживают отладку ядра по сети. В этой статье описывается, как настроить автоматическую отладку сети с помощью средства установки kdnet.exe .
Компьютер, на котором выполняется отладчик, называется главным компьютером, а отлаживаемый компьютер называется целевым компьютером. Главный компьютер должен работать под управлением Windows 7 или более поздней версии, а целевой компьютер должен работать под управлением Windows 8 или более поздней версии.
Определение IP-адреса хост-компьютера
Убедитесь, что целевые компьютеры и узлы подключены к сетевому концентратору или коммутатору с помощью соответствующего сетевого кабеля.
На хост-компьютере откройте командную строку и введите
IPConfig
для отображения IP-конфигурации.В выходных данных команды найдите IPv4-адрес адаптера Ethernet.
...
Ethernet adapter Ethernet:
...
IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
...
Кроме того, используйте параметры, сеть и Интернет, Ethernet для сбора сведений об адресах IPv4.
- Запишите IPv4-адрес сетевого адаптера, который планируется использовать для отладки.
Настройка узлов и целевых компьютеров
Используйте программу kdnet.exe для автоматической настройки параметров отладчика на целевом компьютере, выполнив следующие действия.
Убедитесь, что средства отладки Windows установлены в хост-системе. Сведения о скачивании и установке средств отладчика см. в разделе "Средства отладки" для Windows.
Найдите файлы kdnet.exe и VerifiedNICList.xml. По умолчанию файлы находятся в следующем расположении:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
В этих направлениях предполагается, что оба компьютера работают с 64-разрядной версией Windows как на целевом, так и на узле. Если это не так, лучший подход заключается в том, чтобы запустить ту же "битность" средств на узле, что и целевой объект. Например, если целевой объект работает под управлением 32-разрядной версии Windows, запустите 32-разрядную версию отладчика на узле. Дополнительные сведения см. в разделе "Выбор 32-разрядных или 64-разрядных средств отладки".
На хост-компьютере скопируйте два файла в сетевую общую папку или большой диск, чтобы они были доступны на целевом компьютере.
На целевом компьютере создайте каталог C:\KDNET и скопируйте kdnet.exe и VerifiedNICList.xml файлы в этот каталог.
Внимание
Прежде чем использовать kdnet.exe для изменения сведений о загрузке, может потребоваться временно приостановить функции безопасности Windows, такие как BitLocker и безопасная загрузка на тестовом компьютере. Повторно включите эти функции безопасности при завершении тестирования и соответствующим образом управляйте тестируемым компьютером при отключении функций безопасности.
На целевом компьютере откройте командную строку от имени администратора. Введите следующую команду, чтобы убедиться, что на целевом компьютере есть поддерживаемый сетевой адаптер:
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.
Если выходные данные из kdnet.exe указывают, что сетевой адаптер на целевом объекте поддерживается, можно продолжить.
Введите следующую команду, чтобы задать 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
Скопируйте возвращенный ключ в блокнот .txt файл.
Подключение WinDbg к целевому объекту для отладки ядра
На хост-компьютере откройте WinDbg. В меню "Файл" выберите "Отладка ядра". В диалоговом окне отладки ядра откройте вкладку Net . Вставьте номер порта и ключ, сохраненный в блокноте, .txt файле ранее. Нажмите ОК.
Вы также можете запустить сеанс WinDbg, открыв командную строку и введя следующую команду. <YourPort> — это выбранный ранее порт, и <YourKey> — это ключ, который был возвращен kdnet.exe ранее. Вставьте ключ, сохраненный в блокноте, .txt файл ранее.
windbg.exe -k -d net:port=<YourDebugPort>,key=<YourKey>
Необязательный -d
параметр, показанный в примере, включает ранний разрыв. Дополнительные сведения см. в разделе параметров командной строки WinDbg.
Если вам будет предложено разрешить WinDbg получить доступ к порту через брандмауэр, разрешите WinDbg получить доступ к порту для всех трех различных типов сети.
На этом этапе отладчик ожидает повторного подключения целевого объекта. Текст отображается в командном окне отладчика. Этот текст будет похож на следующий:
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
После перезапуска целевого компьютера отладчик должен подключаться автоматически.
Советы по устранению неполадок
Отладка приложений должна быть разрешена через брандмауэр
На стороне узла, где выполняется отладчик, все типы сети должны быть включены, чтобы отладчик взаимодействовал с целевым объектом через брандмауэр.
Используйте панель управления, чтобы разрешить доступ через брандмауэр.
Откройте панель управления > системе и безопасности и выберите "Разрешить приложение через брандмауэр Windows".
(WinDbg) В списке приложений найдите процесс подсистемы WinDbg (TCP) (все).
(WinDbg (классическая модель)) В списке приложений найдите символьный отладчик 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), для включения четырех типов отладки поддерживаются следующие параметры:
b — включает отладку bootmgr. См . статью BCDEdit /bootdebug.
w — включает отладку winload. См . статью BCDEdit /bootdebug.
h — включает отладку гипервизора. См . статью BCDEdit /hypervisorsettings.
k — включает отладку ядра. См. статью "Начало работы с WinDbg" (режим ядра).
Можно указать любое сочетание типов отладки.
Если типы отладки не указаны, то отладка ядра включена.
Если включена как гипервизор, так и отладка ядра, порт гипервизора имеет значение <YourDebugPort>
+1.
Пример использования
Используйте параметр bkw для включения загрузки, ядра и отладки winload.
C:\>kdnet.exe <HostComputerIPAddress> <YourDebugPort> -bkw
Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
Сводка по параметрам типа отладки
Параметр KNDET | Description | Эквивалентная команда set |
---|---|---|
b | включает отладку bootmgr | bcdedit /bootdebug {bootmgr} в |
ч | включает отладку гипервизора | 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
указывает параметры шины устройства для настройки.
Используйте диспетчер устройств на целевом компьютере, чтобы определить номер шины, устройства и функции для адаптера, который требуется использовать для отладки. Для параметров шины введите b.d.f, где b, d и f — номер шины, номер устройства и номер функции адаптера. Эти значения отображаются в диспетчер устройств в разделе "Расположение" на вкладке "Общие".
Например:
C:\>kdnet.exe /busparams 0.29.7 <HostComputerIPAddress> <YourDebugPort> -bkw