Udostępnij za pomocą


Automatyczne konfigurowanie debugowania jądra sieci KDNET

Narzędzia debugowania dla systemu Windows obsługują debugowanie jądra za pośrednictwem sieci. W tym artykule opisano sposób automatycznego konfigurowania debugowania sieci przy użyciu narzędzia do konfigurowania kdnet.exe .

Komputer z debugerem jest nazywany komputerem hosta, a debugowany komputer jest nazywany komputerem docelowym. Na komputerze hosta musi być uruchomiony system Windows 7 lub nowszy, a komputer docelowy musi mieć system Windows 8 lub nowszy.

Określanie adresu IP komputera hosta

  1. Upewnij się, że komputery docelowy i hosta są podłączone do koncentratora sieciowego lub przełącznika przy użyciu odpowiedniego kabla sieciowego.

  2. Na komputerze-hoście otwórz wiersz polecenia i wprowadź polecenie IPConfig , aby wyświetlić konfigurację adresu IP.

  3. W danych wyjściowych polecenia znajdź adres IPv4 karty Ethernet.

...

Ethernet adapter Ethernet:
...

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

Alternatywnie użyj opcji Ustawienia, Sieć i Internet, Ethernet, aby zebrać informacje o adresie IPv4.

  1. Zanotuj adres IPv4 karty sieciowej, która ma być używana do debugowania.

Konfigurowanie hostów i komputerów docelowych

Użyj narzędzia kdnet.exe, aby automatycznie skonfigurować ustawienia debugera na komputerze docelowym, wykonując następujące kroki.

  1. Upewnij się, że narzędzia debugowania systemu Windows są zainstalowane w systemie hosta. Aby uzyskać informacje na temat pobierania i instalowania narzędzi debugera, zobacz Narzędzia debugowania dla Windows.

  2. Znajdź plikikdnet.exe i VerifiedNICList.xml . Domyślnie pliki znajdują się w następującej lokalizacji:

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

    W tych kierunkach przyjęto założenie, że na obu komputerach jest uruchomiona 64-bitowa wersja systemu Windows zarówno na komputerze docelowym, jak i na hoście. Jeśli tak nie jest, najlepszym rozwiązaniem jest uruchamianie na hoście tych samych narzędzi w tej samej architekturze bitowej, w jakiej działa element docelowy. Jeśli na przykład docelowy system działa na 32-bitowym systemie Windows, uruchom na hoście wersję 32-bitową debugera. Aby uzyskać więcej informacji, zobacz Wybieranie 32-bitowych lub 64-bitowych narzędzi debugowania.

  3. Na komputerze hosta skopiuj dwa pliki do udziału sieciowego lub na dysk USB, aby były dostępne na komputerze docelowym.

  4. Na komputerze docelowym utwórz katalog C:\KDNET i skopiuj plikikdnet.exe i VerifiedNICList.xml do tego katalogu.

    Ważne

    Przed użyciem kdnet.exe w celu zmiany informacji o rozruchu może być konieczne tymczasowe zawieszenie funkcji zabezpieczeń systemu Windows, takich jak funkcja BitLocker i bezpieczny rozruch na komputerze testowym. Włącz ponownie te funkcje zabezpieczeń podczas testowania i odpowiednio zarządzaj komputerem testowym, gdy funkcje zabezpieczeń są wyłączone.

  5. Na komputerze docelowym otwórz wiersz polecenia jako administrator. Wprowadź to polecenie, aby sprawdzić, czy komputer docelowy ma obsługiwaną kartę sieciową:

    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. Gdy dane wyjściowe z kdnet.exe wskazują, że karta sieciowa w docelowym urządzeniu jest obsługiwana, możesz kontynuować.

  7. Wprowadź następujące polecenie, aby ustawić adres IP systemu hosta i wygenerować unikatowy klucz połączenia. Użyj adresu IP lub nazwy systemu hosta. Wybierz unikatowy adres portu dla każdej pary docelowej/hosta, z którą pracujesz, w zalecanym zakresie 50000–50039.

    C:\KDNET>kdnet.exe <HostComputerIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
    Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    
  8. Skopiuj zwrócony klucz do pliku notatnika .txt.

Łączenie usługi WinDbg z obiektem docelowym na potrzeby debugowania jądra

Na komputerze-hoście otwórz plik WinDbg. W menu Plik wybierz opcję Kernel Debug. W oknie dialogowym Debugowanie jądra otwórz kartę Net. Wklej wcześniej zapisany numer portu i klucz w pliku notatnika .txt. Kliknij przycisk OK.

Możesz również uruchomić sesję WinDbg, otwierając wiersz polecenia i wprowadzając następujące polecenie. <YourPort> to wybrany wcześniej port, a <YourKey> jest kluczem zwróconym wcześniej przez kdnet.exe. Wklej klucz, który zapisałeś wcześniej, do pliku notatnika .txt.

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

Opcjonalny -d parametr pokazany w przykładzie umożliwia wczesne zainicjowanie. Aby uzyskać więcej informacji, zobacz Opcje wiersza polecenia WinDbg.

Jeśli zostanie wyświetlony monit o zezwolenie WinDbg na dostęp do portu za pośrednictwem zapory, zezwól WinDbg na dostęp do portu dla wszystkich trzech różnych typów sieci.

Zrzut ekranu przedstawiający alert zabezpieczeń systemu Windows z wyborami umożliwiającymi dostęp do wszystkich trzech typów sieci.

W tym momencie debuger czeka na ponowne nawiązanie połączenia z obiektem docelowym. Tekst jest wyświetlany w oknie polecenia debugera. Ten tekst będzie podobny do następującego:

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...

Uruchom ponownie docelowy komputer

Gdy debuger znajduje się w etapie "Oczekiwanie ponownego nawiązania połączenia...", uruchom ponownie komputer docelowy. Jednym ze sposobów ponownego uruchomienia komputera jest użycie tego polecenia w wierszu polecenia administratora.

shutdown -r -t 0 

Po ponownym uruchomieniu komputera docelowego debuger powinien połączyć się automatycznie.

Wskazówki dotyczące rozwiązywania problemów

Debugowanie aplikacji musi być dozwolone za pośrednictwem zapory

Po stronie hosta, gdzie jest uruchomiony debuger, należy włączyć wszystkie typy sieci, aby umożliwić debugerowi komunikowanie się z obiektem docelowym przez zaporę.

Użyj Panelu sterowania, aby zezwolić na dostęp za pośrednictwem zapory.

  1. Otwórz Panel sterowania > System i bezpieczeństwo i wybierz pozycję Zezwalanie aplikacji za pośrednictwem zapory systemu Windows.

    • (WinDbg) Na liście aplikacji znajdź proces silnika WinDbg (TCP) (wszystkie).

    • (WinDbg (wersja klasyczna)) Na liście aplikacji znajdź debuger symboliczny interfejsu użytkownika systemu Windows i Debuger jądra systemu Windows.

  2. Użyj pól wyboru, aby zezwolić tym dwóm aplikacjom za pośrednictwem wszystkich trzech różnych typów sieci.

  3. Przewiń w dół i wybierz pozycję OK, aby zapisać zmiany zapory sieciowej. Uruchom ponownie debuger.

    Zrzut ekranu przedstawiający konfigurację zapory Panelu sterowania z aplikacjami Windows GUI Symbolic Debugger i Windows Kernel Debugger, którym włączono wszystkie trzy typy sieci.

Testowanie łączności przy użyciu polecenia ping

Jeśli debuger przekroczył limit czasu i nie łączy się, użyj polecenia ping na komputerze docelowym, aby zweryfikować łączność.

   C:\>Ping <HostComputerIPAddress>

Wybieranie portu do debugowania sieci

Jeśli debuger przekroczy limit czasu i nie może się połączyć, może to być spowodowane tym, że domyślny numer portu 50000 jest już używany lub jest zablokowany.

Możesz wybrać dowolny numer portu od 49152 do 65535. Zalecany zakres to od 50000 do 50039. Wybrany port jest otwierany w celu uzyskania wyłącznego dostępu przez debuger działający na komputerze hosta.

Zakres numerów portów, które mogą być używane do debugowania sieci, może być ograniczony przez zasady sieciowe firmy. Aby określić, czy zasady firmy ograniczają zakres portów, które mogą być używane do debugowania sieci, sprawdź się z administratorami sieci.

Obsługiwane karty sieciowe

Jeśli podczas uruchamiania kdnet.exepojawi się komunikat "Debugowanie sieci nie jest obsługiwane na żadnej z kart sieciowych w tym komputerze", oznacza to, że karta sieciowa nie jest obsługiwana.

Komputer-host może używać dowolnej karty sieciowej, ale komputer docelowy musi używać karty sieciowej obsługiwanej przez narzędzia debugowania dla systemu Windows. Aby uzyskać listę obsługiwanych kart sieciowych, zobacz Obsługiwane karty sieciowe Ethernet do debugowania jądra sieci w systemie Windows 10 i Obsługiwane karty sieciowe Ethernet do debugowania jądra sieci w systemie Windows 8.1.

Włączanie innych typów debugowania

Począwszy od systemu Windows 10 z października 2020 r. Update (20H2), obsługiwane są następujące opcje umożliwiające włączenie czterech typów debugowania:

Można określić dowolną kombinację typów debugowania.

Jeśli nie określono żadnych typów debugowania, debugowanie jądra jest włączone.

Jeśli włączono zarówno funkcję hypervisor, jak i debugowanie jądra, port funkcji hypervisor jest ustawiony na <YourDebugPort> + 1.

Przykładowe użycie

Użyj opcji - bkw, aby włączyć debugowanie bootmgr, jądra i winload.

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

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

Podsumowanie opcji typu debugowania

Opcja KNDET Opis Równoważne polecenie set
b umożliwia debugowanie programu bootmgr bcdedit /bootdebug {bootmgr} on
h umożliwia debugowanie funkcji hypervisor bcdedit /set hypervisordebug on
k włącza debugowanie jądra bcdedit /debug on
w włącza debugowanie winload bcdedit /bootdebug on

Określanie parametrów magistrali

Jeśli kdnet nie może automatycznie określić parametrów magistrali dla transportu, określ je w wierszu polecenia, korzystając z następującej składni /busparams.

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

b.d.f określa parametry magistrali urządzenia do skonfigurowania.

Użyj Menedżera urządzeń na komputerze docelowym, aby określić numery magistrali PCI, urządzenia i funkcji dla karty, która ma być używana do debugowania. W przypadku parametrów magistrali wprowadź b. d. f gdzie b, d i f to numer magistrali, numer urządzenia i numer funkcji adaptera. Te wartości są wyświetlane w Menedżerze urządzeń w obszarze Lokalizacja na karcie Ogólne .

Na przykład:

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

Zobacz też