Sdílet prostřednictvím


Ruční nastavení ladění síťového jádra KDNET

Nástroje ladění pro Windows podporují ladění jádra přes síť. Tento článek popisuje, jak nastavit ladění sítě ručně.

Důležitý

Ruční nastavení ladění sítě je složitý proces náchylný k chybám. Pokud chcete nastavit ladění sítě automaticky, přečtěte si téma Nastavení ladění jádra sítě KDNET automaticky. Použití nástroje KDNET důrazně doporučujeme pro všechny uživatele ladicího programu.

Počítač, na kterém je spuštěn ladicí program, se nazývá hostitelský počítača laděný počítač se nazývá cílový počítač. Hostitelský počítač musí mít systém Windows 7 nebo novější a cílový počítač musí mít systém Windows 8 nebo novější.

Ladění přes síť má následující výhody v porovnání s laděním pomocí jiných typů připojení.

  • Hostitel a cílové počítače mohou být kdekoli v místní síti.
  • Je snadné ladit mnoho cílových počítačů z jednoho hostitelského počítače.
  • Vzhledem k tomu, že mají dva počítače, je pravděpodobné, že oba mají ethernetové adaptéry. Je méně pravděpodobné, že oba mají sériové porty nebo porty 1394.
  • Ladění sítě je rychlejší než ladění sériového portu.

Podporované síťové adaptéry

Hostitelský počítač může používat libovolný síťový adaptér, ale cílový počítač musí používat síťový adaptér podporovaný nástroji ladění pro Windows. Seznam podporovaných síťových adaptérů najdete v tématu Podporované ethernetové síťové karty pro ladění jádra sítě ve Windows 11 a Podporované ethernetové síťové karty pro ladění jádra sítě v systému Windows 10.

Instalace nástrojů pro ladění pro Windows

Ověřte, že jsou v hostitelském systému nainstalované nástroje ladění pro Windows. Informace o stahování a instalaci nástrojů ladicího programu naleznete v tématu Nástroje ladění pro systém Windows.

Určení IP adresy hostitelského počítače

K určení IP adresy hostitelského počítače použijte jeden z následujících postupů.

  1. Na hostitelském počítači otevřete příkazový řádek a zadejte následující příkaz:

    ipconfig
    

    Poznamenejte si adresu IPv4 síťového adaptéru, který chcete použít k ladění.

  2. Na cílovém počítači otevřete příkazový řádek a zadejte následující příkaz, kde YourIPAddress je IP adresa hostitelského počítače:

    ping -4 <YourIPAddress>
    

Volba portu pro ladění sítě

Zvolte číslo portu pro ladění na hostitelských i cílových počítačích. Můžete zvolit libovolné číslo od 49152 do 65535. Doporučený rozsah je 50000 až 50039. Port, který zvolíte, se otevře pro výhradní přístup ladicí program spuštěný na hostitelském počítači. Dbejte na to, abyste zvolili číslo portu, které nepoužívají žádné jiné aplikace, které běží na hostitelském počítači.

Poznámka

Rozsah čísel portů, která se dají použít pro ladění sítě, může být omezen zásadami sítě vaší společnosti. Z hostitelského počítače neexistuje způsob, jak zjistit, jaká jsou omezení. Pokud chcete zjistit, jestli zásady vaší společnosti omezují rozsah portů, které se dají použít pro ladění sítě, obraťte se na správce sítě.

Pokud k jednomu hostitelskému počítači připojíte několik cílových počítačů, musí mít každé připojení jedinečné číslo portu. Pokud například připojíte 100 cílových počítačů k jednomu hostitelskému počítači, můžete přiřadit port 50000 prvnímu připojení, portu 50001 druhému připojení atd.

Poznámka

 Jiný hostitelský počítač může pro připojení k dalším 100 cílovým počítačům použít stejný rozsah portů (50000 až 50099).

Nastavení cílového počítače

  1. Ověřte, že cílový počítač má podporovaný síťový adaptér. Další informace najdete tady:

  2. Připojte podporovaný adaptér k síťovému rozbočovači nebo přepínači pomocí příslušného síťového kabelu.

Důležitý

Před použitím BCDEdit ke změně informací o spuštění může být nutné dočasně pozastavit funkce zabezpečení systému Windows, jako je BitLocker a Zabezpečené spouštění, na testovacím počítači. Po dokončení testování znovu zapněte tyto funkce zabezpečení a počítač pro testování spravujte odpovídajícím způsobem, když jsou funkce zabezpečení zakázané.

  1. Na příkazovém řádku se zvýšenými oprávněními zadejte následující příkazy, kde w.x.y.z je IP adresa hostitelského počítače a n je číslo portu podle vašeho výběru:

    bcdedit /debug on
    
    bcdedit /dbgsettings net hostip:w.x.y.z port:n
    
  2. BCDEdit zobrazí automaticky vygenerovaný klíč. Zkopírujte klíč a uložte ho na vyměnitelném úložném zařízení, jako je USB flash disk. Klíč potřebujete při spuštění ladicí relace na hostitelském počítači.

  3. Pomocí Správce zařízení určete sběrnici PCI, zařízení a čísla funkcí adaptéru, který chcete použít k ladění. Tyto hodnoty se zobrazí ve Správci zařízení v části Umístění na kartě Obecné. Potom v příkazovém řádku se zvýšenými oprávněními zadejte následující příkaz, kde b, da f jsou číslo sběrnice, číslo zařízení a číslo funkce adaptéru:

    bcdedit /set "{dbgsettings}" busparams b.d.f
    
  4. Po připojení ladicího programu jádra bude cílový počítač restartován.

Poznámka

Pokud chcete nainstalovat roli Hyper-V na cílový počítač, přečtěte si téma Nastavení ladění sítě pro hostitele virtuálního počítače.

Upozornění Pokud je cílový počítač v dokovací stanici a máte povolené ladění sítě pro síťový adaptér, který je součástí dokovací stanice, neodebíjejte počítač z dokovací stanice. Pokud potřebujete odebrat cílový počítač z dokovací stanice, zakažte nejprve ladění jádra. Chcete-li zakázat ladění jádra v cílovém počítači, otevřete příkazový řádek jako správce a zadejte příkaz bcdedit /debug off. Restartujte cílový počítač.

Spuštění ladicí relace

Pomocí příslušného síťového kabelu ověřte, že je síťový adaptér hostitelského počítače připojený k síťovému rozbočovači nebo přepínači.

Na hostitelském počítači otevřete WinDbg. V nabídce Soubor vyberte Ladění jádra. V dialogovém okně Ladění jádra otevřete záložku Net. Zadejte číslo portu a klíč. Vyberte OK.

Relaci s WinDbg můžete spustit také tak, že otevřete příkazový řádek a zadáte následující příkaz, kde n je číslo portu a MyKey je klíč, který při nastavování cílového počítače automaticky vygeneroval BCDEdit:

windbg -k net:port=<n>,key=<MyKey>

Pokud se zobrazí výzva k povolení přístupu k portu přes bránu firewall, povolte WinDbg přístup k portu pro všechny tři různých typů sítě.

Použití KD

Na hostitelském počítači otevřete příkazový řádek. Zadejte následující příkaz, kde n je číslo portu a MyKey je klíč, který se automaticky vygeneroval službou BCDEdit při nastavování cílového počítače:

kd -k net:port=<n>,key=<MyKey>

Pokud se zobrazí výzva k povolení přístupu k portu přes bránu firewall, povolte aplikaci WinDbg přístup k portu pro všechny tři různé typy sítí.

Restartování cílového počítače

Jakmile je ladicí program připojen a čeká na připojení, restartujte cílový počítač. Jedním ze způsobů, jak restartovat počítač, je použít tento příkaz z příkazového řádku správce:

shutdown -r -t 0

Po restartování cíle by se měl ladicí program v hostitelském operačním systému připojit.

Po připojení k cíli na hostiteli stiskněte přerušení ladicího programu a můžete spustit ladění.

Povolení ladicího programu přes bránu firewall

Při prvním pokusu o navázání připojení k ladění sítě se může zobrazit výzva k povolení přístupu k ladicí aplikaci (WinDbg nebo KD) přes bránu firewall. Klientské verze Systému Windows zobrazují výzvu, ale serverové verze Systému Windows nezobrazují výzvu. Na tuto výzvu byste měli odpovědět zaškrtnutím políček pro všechny tři typy sítí: doménová, privátní a veřejná.

Pokud se vám nezobrazí výzva nebo pokud jste po zobrazení výzvy nezaškrtli políčka, musíte pomocí Ovládacích panelů povolit přístup přes bránu firewall na hostitelském počítači, na kterém je ladicí program spuštěný. Otevřete Ovládací panely > Systém a zabezpečení a vyberte Povolit aplikaci skrze bránu Windows Firewall.

  • (WinDbg) V seznamu aplikací vyhledejte proces stroje WinDbg (TCP) (všechny).

  • (Classic WinDbg) V seznamu aplikací vyhledejte Windows GUI symbolický ladicí program a Ladicí program jádra Windows.

Pomocí zaškrtávacích políček povolte tyto aplikace přes bránu firewall. Restartujte ladicí aplikaci (WinDbg nebo KD).

Šifrovací klíč

Aby byl cílový počítač zabezpečený, musí být pakety, které cestují mezi hostitelem a cílovými počítači, šifrované. Při konfiguraci cílového počítače byste měli použít automaticky vygenerovaný šifrovací klíč (který poskytuje BCDEdit). Použití automaticky generovaného šifrovacího klíče se doporučuje, protože je bezpečnější a poskytuje jedinečnou hodnotu, která se používá při navazování připojení ke konkrétnímu cíli.

Ladění sítě používá 256bitový klíč, který je zadaný jako čtyři 64bitové hodnoty v 36kové soustavě, oddělené tečkami. Každá 64bitová hodnota je určena až 13 znaky. Platné znaky jsou písmena z a číslice 0 až 9. Speciální znaky nejsou povolené.

Pokud chcete zadat vlastní klíč, otevřete v cílovém počítači příkazový řádek se zvýšenými oprávněními. Zadejte následující příkaz, kde je IP adresa hostitelského počítače, n je číslo portu a klíč klíč je váš klíč:

bcdedit /dbgsettings net hostip:w.x.y.z port:n key:Key

Cílový počítač je nutné restartovat pokaždé, kdykoli se změní dbgsettings.

Tipy pro řešení potíží

Aplikace ladění musí být povolená prostřednictvím bran firewall.

Při prvním pokusu o navázání připojení k ladění sítě se může zobrazit výzva k povolení přístupu k ladicí aplikaci (WinDbg nebo KD) přes bránu firewall. Klientské verze Systému Windows zobrazují výzvu, ale serverové verze Systému Windows nezobrazují výzvu. Na tuto výzvu byste měli odpovědět zaškrtnutím políček pro všechny tři typy sítě: doména, privátní a veřejná.

Pokud se vám nezobrazí výzva nebo pokud jste po zpřístupnění výzvy nezaškrtli políčka, musíte k povolení přístupu přes bránu firewall použít Ovládací panely. Otevřete Ovládací panely > Systém a zabezpečení a vyberte Povolit aplikaci přes bránu Windows Firewall.

  • (WinDbg) V seznamu aplikací vyhledejte proces stroje WinDbg (TCP) (všechny).

  • (WINDBG (Classic)) V seznamu aplikací vyhledejte Windows GUI symbolický ladicí program a ladicí program jádra Windows.

Pomocí zaškrtávacích políček povolte tyto aplikace přes bránu firewall. Posuňte se dolů a výběrem OK uložte změny brány firewall. Znovu spusťte ladicí program.

Číslo portu musí být v rozsahu povoleném zásadami sítě.

Rozsah čísel portů, která se dají použít pro ladění sítě, může být omezen zásadami sítě vaší společnosti. Pokud chcete zjistit, jestli zásady vaší společnosti omezují rozsah portů, které se dají použít pro ladění sítě, obraťte se na správce sítě. V cílovém počítači otevřete příkazový řádek jako správce a zadejte příkaz bcdedit /dbgsettings. Výstup bude podobný následujícímu:

C:\> bcdedit /dbgsettings
key                     XXXXXX.XXXXX.XXXXX.XXXXX
debugtype               NET
hostip                  169.168.1.1
port                    50085
dhcp                    Yes
The operation completed successfully.

V předchozím výstupu je hodnota portu 50085. Pokud hodnota portu leží mimo rozsah povolený správcem sítě, zadejte následující příkaz. Hodnota w.x.y.z je IP adresa hostitelského počítače a YourDebugPort je číslo portu v povoleném rozsahu.

bcdedit /dbgsettings net hostip:w.x.y.z port:YourDebugPort

Po změně nastavení ladicího programu cílového počítače znovu spusťte ladicí program na hostitelském počítači s novým nastavením portu a restartujte cílový počítač.

Použití příkazu ping k otestování připojení

Pokud se debugger nepřipojí, pomocí příkazu ping na cílovém počítači ověřte konektivitu.

C:\>Ping <HostComputerIPAddress>

Poznámka

To nemusí fungovat, pokud váš hostitelský počítač není nakonfigurovaný tak, aby byl v síti zjistitelný, protože brána firewall může blokovat požadavky ping. Pokud brána firewall blokuje požadavky ping, nebudete dostávat žádné odpovědi, když pingujete hostitele.

Jak ladicí program získá IP adresu cílového počítače

KDNET na cílovém počítači se pokusí použít protokol DHCP (Dynamic Host Configuration Protocol) k získání směrovatelné IP adresy síťového adaptéru, který se používá k ladění. Pokud služba KDNET získá adresu přiřazenou protokolem DHCP, může být cílový počítač laděn hostitelskými počítači umístěnými kdekoli v síti. Pokud se službě KDNET nepodaří získat adresu přiřazenou protokolem DHCP, použije k získání IP adresy místního propojení automatické přidělování privátních IP adres (APIPA). IP adresy místního propojení nejsou směrovatelné, takže hostitel a cíl nemůžou ke komunikaci přes směrovač použít IP adresu místního propojení. V takovém případě bude ladění sítě fungovat, pokud připojíte hostitele a cílové počítače do stejného síťového rozbočovače nebo přepínače.

Při nastavování KDNET na fyzickém počítači se síťovou kartou na bázi PCI vždy určete parametry sběrnice.

Pokud nastavujete KDNET na fyzickém počítači se síťovým rozhraním založeným na PCI nebo PCIe, měli byste vždy zadat parametry sběrnice pro síťovou kartu, kterou chcete použít pro KDNET. Pokud chcete zadat parametry sběrnice, otevřete Správce zařízení a vyhledejte síťový adaptér, který chcete použít k ladění. Otevřete stránku vlastností pro síťový adaptér a poznamenejte si číslo sběrnice, číslo zařízení a číslo funkce zobrazené v části Umístění na kartě Obecné. V příkazovém řádku se zvýšenými oprávněními zadejte následující příkaz, kde b, da f jsou čísla sběrnice, zařízení a funkce v desítkovém formátu:

bcdedit /set "{dbgsettings}" busparams b.d.f

Když je ladicí program spuštěn na hostitelském počítači a čeká na připojení, restartujte cílový počítač pomocí následujícího příkazu:

shutdown -r -t 0

Ruční odstranění položek BCDEdit

Ruční odstranění se obvykle nevyžaduje, ale je zde k dispozici jako postup řešení potíží pro neobvyklé situace.

Ruční odstranění položek není nutné při použití nástroje kdnet. Další informace naleznete v tématu Nastavení ladění jádra sítě KDNET automaticky.

Při použití bcdedit –deletevaluemusíte zadat platný název elementu bcd. Další informace najdete v tématu BCDEdit /deletevalue.

Pokud chcete položky bcdedit odstranit ručně, proveďte následující kroky:

  1. Na cílovém počítači otevřete příkazový řádek jako správce.

  2. Jako příklad zadejte následující příkaz, který odstraní položku ladění BCDEdit pro IP adresu hostitele:

    bcdedit -deletevalue {dbgsettings} hostip
    

Při odstranění hostip je nutné zadat target= v příkazovém řádku ladicího programu.

  1. V dalším příkladu odstraňte položku portu pomocí následujícího příkazu:

    bcdedit -deletevalue {dbgsettings} port
    

Když odstraníte položku portu, KDNET použije výchozí port pro ladicí program registrovaný u ICANN s číslem 5364.

Nastavení Hyper-V

Pokud chcete nainstalovat roli Hyper-V na cílový počítač, přečtěte si téma Nastavení ladění sítě hostitele virtuálního počítače.

Informace o ladění virtuálního počítače Hyper-V najdete v tématu Nastavení ladění sítě virtuálního počítače – KDNET.

Povolení sítě KDNET na hostiteli Hyper-V se spuštěnými virtuálními počítači s připojením k externí síti

Někdy dojde k situaci, která způsobí, že sítě ve virtuálních počítačích přestanou fungovat:

  • Hyper-V byl na počítači povolen, vytvořil se externí síťový přepínač a ukazuje na fyzickou síťovou kartu v počítači a virtuální počítače byly nakonfigurovány tak, aby používaly tento externí přepínač pro své sítě.

  • Síť KDNET se pak povolí na Hyper-V hostitelském operačním systému pomocí stejné fyzické síťové karty, na kterou odkazuje externí síťový přepínač. Hostitel se restartuje.

  • Všechny virtuální počítače, které používaly dříve nakonfigurovaný externí přepínač, po restartování ztratí připojení k síti.

Tato zarážka je záměrná a dochází k ní, protože KDNET přebírá výhradní kontrolu nad síťovým adaptérem, který je nakonfigurovaný pro použití. Nativní miniport NDIS pro danou síťovou kartu není načtený operačním systémem. Externí síťový přepínač pak nemůže komunikovat s nativním ovladačem miniportu NDIS a přestane fungovat. Pokud chcete tuto situaci obejít, postupujte takto:

  1. Otevřete Správce virtuálního přepínače z Hyper-V Manageru a vyberte existující virtuální přepínač. Změňte síťové rozhraní externí sítě na Microsoft Kernel Debug Network Adapter tak, že jej vyberete z rozevírací nabídky a poté vyberete možnost OK v dialogovém okně Virtual Switch Manager.

  2. Po aktualizaci síťové karty virtuálního přepínače vypněte a restartujte virtuální počítače.

Pokud je ladění KDNET vypnuté, je potřeba postupovat stejným postupem, aby se externí přepínač znovu nasměroval zpět na nativní miniport NDIS síťové karty. Jinak dojde ke ztrátě připojení VM při restartování stroje po zakázání ladění.

IPv6

Podpora IPv6 byla přidána ve Windows verze 1809.

Pokud chcete používat protokol IPv6 s ladicím programem, proveďte následující kroky:

  1. Pomocí příkazu ping na <debughostname> si poznamenejte adresu IPv6 uvedenou v odpovědi mezi výstupními řádky. Místo x:y:z:p:d:q:r:npoužijte tuto adresu IPv6 .

  2. Pomocí BCDEdit odstraňte všechny existující hodnoty IP adres v dbgsettings.

    bcdedit -deletevalue {dbgsettings} hostip
    
  3. Nastavte adresu IPv6 hostitele. V řetězci hostipv6=s:t:u:v:w:x:y:z nesmí být žádné mezery. <YourPort> je číslo síťového portu, které se má použít pro tento cílový počítač. <váš klíč> je čtyřdílný klíč zabezpečení. <b.d.f> jsou čísla umístění funkce sběrnice pro síťovou kartu (NIC), kterou chcete použít pro KDNET.

    bcdedit /dbgsettings net hostipv6:s:t:u:v:w:x:y:z port:<YourPort> key:<YourKey> busparams:<b.d.f>
    
  4. Zadáním tohoto příkazu potvrďte, že jsou správně nastavené dbgsettings.

    C:\> bcdedit /dbgsettings
    busparams               0.25.0
    key                     2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    debugtype               NET
    hostipv6                  2001:db8:0:0:ff00:0:42:8329
    port                    50010
    dhcp                    Yes
    The operation completed successfully.
    
  5. Na hostitelském počítači použijte následující příkaz ke spuštění ladicího nástroje:

    Windbg -k net:port=<yournetworkportnumber>,key=<key_output_from_kdnet>,target=::<YourIPv6Address> 
    
  6. Když debugger běží na hostitelském počítači a čeká na připojení, restartujte cílový počítač.

  7. Ladicí program by se měl během spouštění připojit k ladicímu programu hostitele. Vidíte, že síť KDNET používá připojení IPv6, protože IP adresy hlášené v připojené zprávě jsou adresy IPv6 místo IPv4 adres.

Poznámky

  • Každé nastavení bcd ladicího programu, které umožňuje zadat hostip, má odpovídající hostipv6 prvek. Jsou tři.

    IPv4 IPv6 Použití
    adresa IP hostitele hostipv6 Pro ladění spouštění systému a jádra
    IP adresa cílového hostitele targethostipv6 Specifické pro ladění jádra
    hypervisorhostip hypervisorhostipv6 Pro ladění v Hyper-V
  • Pokud nastavíte adresu typu hostipv6 pro některý z těchto druhů ladění, znamená to, že požadujete a obdržíte protokol IPv6.

  • Pokud nastavíte adresu stylu hostip pro některý z těchto typů ladění, znamená to, že chcete a dostanete protokol IPv4.

  • Cíl bude podporovat pouze IPv4 nebo IPv6, nikoli obě současně. Verze použitého protokolu IP je řízena cílovým počítačem dbgsettings. Pokud je nastavená hostip, cíl používá protokol IPv4. Pokud je nastavená hostipv6, cíl používá protokol IPv6.

  • Ladicí program hostitele obvykle automaticky vybere použití protokolu IPv4 nebo IPv6. Ve výchozím nastavení ladicí program naslouchá na soketu IPv4 i soketu IPv6 a automaticky se připojí k cílovému počítači.

  • Pokud chcete vynutit použití protokolu IPv6 v ladicím programu na hostiteli, ale chcete, aby ladicí program naslouchal připojení z cíle, můžete přidat target=:: do příkazového řádku ladicího programu. :: je adresa IPv6 0.

  • Pokud chcete vynutit ladění IPv4 v ladicím programu na hostiteli, ale chcete, aby ladicí program naslouchal na spojení z cílového zařízení, můžete přidat target=0.0.0.0 do příkazového řádku ladicího programu. 0.0.0.0 je adresa IPv4 0.

  • Pokud zadáte target= na příkazovém řádku ladicího programu a použijete název počítače, ladicí program tento název počítače převede na adresu IPv4 a adresu IPv6. Ladicí program se pak pokusí připojit k oběma.

  • Když zadáte target= na příkazovém řádku ladicího programu a použijete IP adresu, pokud IP adresa obsahuje nějaké : znaky, ladicí program předpokládá, že se jedná o adresu IPv6, a vynutí použití protokolu IPv6 pro toto připojení. Pokud IP adresa obsahuje znaky typu ., ladicí program předpokládá, že se jedná o adresu IPv4, a vyžaduje použití IPv4 pro toto připojení.

  • Pokud nastavíte protokol IPv6 v cíli a vynutíte použití protokolu IPv4 na příkazovém řádku ladicího programu, nedostanete připojení.

  • Pokud nastavíte protokol IPv4 v cíli a vynutíte použití protokolu IPv6 na příkazovém řádku ladicího programu, nebudete mít připojení.

Viz také