Ruční nastavení Kernel-Mode ladění virtuálního počítače pomocí virtuálního portu COM
Nástroje ladění pro Windows podporují ladění jádra virtuálního počítače. Virtuální počítač se může nacházet ve stejném fyzickém počítači jako ladicí program nebo na jiném počítači, který je připojený ke stejné síti. Toto téma popisuje, jak nastavit ladění virtuálního počítače ručně pomocí virtuálního portu COM přes KDCOM.
Použití virtuálních sítí KDNET je rychlejší a doporučuje se. Další informace najdete v části Nastavení ladění sítě virtuálního počítače pomocí KDNET.
Nastavení cílového virtuálního počítače
Počítač, na kterém běží ladicí program, se nazývá hostitelský počítač, zatímco virtuální počítač laděný tímto programem se nazývá cílový virtuální počítač.
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í opět aktivujte tyto funkce zabezpečení a odpovídajícím způsobem zacházejte s testovacím počítačem, když jsou bezpečnostní funkce vypnuté.
V okně příkazového řádku se zvýšenými oprávněními na virtuálním počítači zadejte následující příkazy.
bcdedit /debug na
bcdedit /dbgsettings serial debugport:nbaudrate:115200
kde n je číslo portu COM na virtuálním počítači.
Na virtuálním počítači nakonfigurujte port COM tak, aby se mapoval na pojmenovanou rouru. Ladicí program se připojí přes tento kanál. Další informace o tom, jak vytvořit tento kanál, najdete v dokumentaci k virtuálnímu počítači.
Spusťte ladicí program v režimu se zvýšenými oprávněními, například z příkazového řádku správce. Ladicí program musí být spuštěný v režimu se zvýšenými oprávněními při ladění virtuálního počítače přes sériovou linku. Po připojení a spuštění ladicího programu restartujte cílový virtuální počítač.
Spuštění relace ladění pomocí WinDbg
Na hostitelském počítači otevřete WinDbg jako správce. Ladicí program musí být spuštěný v režimu se zvýšenými oprávněními při ladění virtuálního počítače přes sériové potrubí. V nabídce Soubor zvolte Ladění jádra. V dialogovém okně Ladění jádra otevřete kartu COM. Zaškrtněte zaškrtávací políčko Pipe a zaškrtněte zaškrtávací políčko Reconnect. Pro baudovou rychlostzadejte 115200. Pro Resetovánízadejte 0.
Pokud ladicí program běží na stejném počítači jako virtuální počítač, zadejte následující informace pro port.
\\.\pipe\PipeName.
Pokud ladicí program běží na jiném počítači než na virtuálním počítači, zadejte následující příkaz pro port.
\\ VMHost\pipe\PipeName
Vyberte OK.
WinDbg můžete spustit také na příkazovém řádku. Pokud ladicí program běží na stejném fyzickém počítači jako virtuální počítač, zadejte do okna příkazového řádku následující příkaz.
windbg -k com:pipe,port=\.\pipe\PipeName,resets=0,reconnect
Pokud ladicí program běží na jiném fyzickém počítači než na virtuálním počítači, zadejte do okna příkazového řádku následující příkaz.
windbg -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect
Spuštění relace ladění pomocí KD
Pokud chcete ladit virtuální počítač, který běží na stejném fyzickém počítači jako ladicí program, zadejte do okna příkazového řádku se zvýšenými oprávněními následující příkaz.
kd -k com:pipe,port=\.\pipe\PipeName,resets=0,reconnect
Pokud chcete ladit virtuální počítač, který běží na jiném fyzickém počítači od ladicího programu, zadejte do okna příkazového řádku následující příkaz.
kd -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect
Parametry
VMHost
Určuje název počítače, na kterém je virtuální počítač spuštěný.
PipeName
Určuje název kanálu, který jste vytvořili na virtuálním počítači.
resetování =0
Určuje, že při synchronizaci hostitele a cíle se do cíle může odeslat neomezený počet resetovaných paketů. Použijte parametr resets=0 pro virtuální počítač Microsoft a další virtuální počítače, jejichž kanály zahazují nadbytečné bajty. Nepoužívejte tento parametr pro VMware nebo jiné virtuální počítače, jejichž kanály nezahazují všechny nadbytečné bajty.
znovu připojit
Způsobí, že se ladicí program automaticky odpojí a znovu připojí potrubí, pokud dojde k selhání čtení a zápisu. Pokud ladicí program při spuštění nenajde pojmenovaný kanál, parametr znovupřipojení způsobí, že ladicí program počká na objevení kanálu s názvem PipeName. Použijte znovu připojit pro virtuální počítač a další virtuální počítače, které zničí a znovu vytvoří kanály během restartování počítače. Tento parametr nepoužívejte pro VMware nebo jiné virtuální počítače, které během restartování počítače zachovávají jejich kanály.
Další informace o dalších možnostech příkazového řádku naleznete v tématu KD Command-Line Možnosti nebo WinDbg Command-Line Možnosti.
Virtuální počítače generace 2
Ve výchozím nastavení se porty COM nezobrazují ve virtuálních počítačích generace 2. Porty COM můžete přidat prostřednictvím PowerShellu nebo rozhraní WMI. Aby se porty COM zobrazovaly v konzole správce Hyper-V, musí být vytvořeny s definovanou cestou.
Pokud chcete povolit ladění jádra pomocí portu COM na virtuálním počítači generace 2, postupujte takto:
Zakažte zabezpečené spouštění zadáním tohoto příkazu PowerShellu:
Set-VMFirmware –VmnameVmName–EnableSecureBoot Off
kde VmName je název vašeho virtuálního počítače.
Zadáním tohoto příkazu PowerShellu přidejte do virtuálního počítače port COM:
Set-VMComPort –VMNameVmName1 \\.\pipe\PipeName
Například následující příkaz nakonfiguruje první port COM na virtuálním počítači TestVM pro připojení k pojmenované kanálu TestPipe v místním počítači.
Set-VMComPort –VMName TestVM 1 \\.\pipe\TestPipe
Jakmile je ladicí program připojený a spuštěný, zastavte virtuální počítač a proveďte studený start k aktivaci portů COM ve virtuálním počítači. Emulované UARTy nejsou k dispozici pro ladění, pokud není alespoň jeden skutečně nakonfigurován s názvem kanálu, a nelze je přidat za běhu.
Po dokončení aktualizace změn konfigurace znovu povolte zabezpečené spouštění.
Další informace o virtuálních počítačích generace 2 najdete v tématu 2. generace – přehled virtuálních počítačů.
Poznámky
Pokud cílový počítač přestal reagovat, je stále ve stavu zastavení kvůli dřívější akci ladění jádra nebo jste použili možnost -bpříkazového řádku, ladicí program se okamžitě přejde do cílového počítače.
V opačném případě cílový počítač pokračuje v běhu, dokud jej ladicí program nepřeruší.
Řešení potíží s branami firewall a síťovým přístupem
Váš ladicí program (WinDbg nebo KD) musí mít přístup přes bránu firewall. To může být i případ virtuálních sériových portů podporovaných síťovými adaptéry.
Pokud vás systém Windows vyzve k vypnutí brány firewall při načtení ladicího programu, vyberte všechna tři zaškrtávací políčka.
V závislosti na konkrétních specifikacích používaného virtuálního stroje mohou být vyžadovány změny nastavení sítě pro virtuální stroje, aby byly přemostěny k síťovému ladicímu adaptéru jádra Microsoft. Jinak nebudou mít virtuální počítače přístup k síti.
Windows Firewall
Pomocí Ovládacích panelů můžete povolit přístup přes bránu Windows Firewall. Otevřete Ovládací panely > Systém a zabezpečení a vyberte Povolit aplikaci prostřednictvím brány Windows Firewall. V seznamu aplikací vyhledejte Windows GUI symbolický ladicí program a Windows kernelový ladicí program. Pomocí zaškrtávacích políček povolte tyto dvě aplikace přes bránu firewall. Restartujte ladicí aplikaci (WinDbg nebo KD).
Virtuální počítače třetích stran
VMWare
Pokud virtuální počítač restartujete pomocí zařízení VMWare (například tlačítka pro resetování), ukončete WinDbg a restartujte WinDbg, abyste mohli pokračovat v ladění. Během ladění virtuálních počítačů VMWare často spotřebovává 100% procesoru.
Viz také
Nastavení sítě pro ladění virtuálního počítače s KDNET