Delen via


Handmatig Kernel-Mode foutopsporing van een virtuele machine instellen met behulp van een virtuele COM-poort

Foutopsporingsprogramma's voor Windows ondersteunt kernelfoutopsporing van een virtuele machine. De virtuele machine kan zich op dezelfde fysieke computer bevinden als het foutopsporingsprogramma of op een andere computer die is verbonden met hetzelfde netwerk. In dit onderwerp wordt beschreven hoe u foutopsporing van een virtuele machine handmatig kunt instellen met behulp van een virtuele COM-poort via KDCOM.

Het gebruik van virtuele KDNET-netwerken is een snellere optie en wordt aanbevolen. Zie Network Debugging van een virtuele machine instellen met KDNET-voor meer informatie.

De doelvirtuele machine configureren

De computer waarop het foutopsporingsprogramma wordt uitgevoerd, wordt de hostcomputergenoemd en de virtuele machine die wordt opgespoord, wordt de doel-VMgenoemd.

Belangrijk

Voordat u BCDEdit gebruikt om opstartgegevens te wijzigen, moet u mogelijk de Windows-beveiligingsfuncties, zoals BitLocker en Beveiligd opstarten, tijdelijk onderbreken op de test-pc. Schakel deze beveiligingsfuncties opnieuw in wanneer het testen is voltooid en de test-pc op de juiste wijze beheert wanneer de beveiligingsfuncties zijn uitgeschakeld.

  1. Voer in een opdrachtpromptvenster met verhoogde bevoegdheid de volgende opdrachten in op de virtuele machine.

    bcdedit /debug op

    bcdedit /dbgsettings serial debugport:nbaudrate:115200

    waarbij n het aantal COM-poorten op de virtuele machine is.

  2. Configureer op de virtuele machine de COM-poort die moet worden toegewezen aan een benoemde pijp. Het foutopsporingsprogramma maakt verbinding via deze pijp. Zie de documentatie van uw virtuele machine voor meer informatie over het maken van deze pijp.

  3. Start het foutopsporingsprogramma in verhoogde modus, bijvoorbeeld vanaf een opdrachtprompt van de beheerder. Het foutopsporingsprogramma moet worden uitgevoerd in verhoogde bevoegdheidsmodus wanneer u een virtuele machine via een seriële pijp debugt. Zodra het foutopsporingsprogramma is gekoppeld en wordt uitgevoerd, start u de doel-VM opnieuw op.

De foutopsporingssessie starten met behulp van WinDbg

Open WinDbg op de hostcomputer als beheerder. De debugger moet in verhoogde modus worden uitgevoerd wanneer u een virtuele machine via een seriële pijp debugt. Kies in het menu Bestand de optie Kernel Debugging. Open in het dialoogvenster Kernelfoutopsporing het tabblad COM-. Schakel het selectievakje Pipe in en schakel het selectievakje Opnieuw verbinding maken in. Voor Baud Ratevoert u 115200 in. Voor het resetten van , voer 0 in.

Als het foutopsporingsprogramma wordt uitgevoerd op dezelfde computer als de virtuele machine, voert u het volgende in voor Poort.

\\.\pipe\PipeName.

Als het foutopsporingsprogramma wordt uitgevoerd op een andere computer dan de virtuele machine, voert u het volgende in voor Poort.

\\ VMHost\pipe\PipeName

Selecteer OK-.

U kunt WinDbg ook starten op de opdrachtregel. Als het foutopsporingsprogramma wordt uitgevoerd op dezelfde fysieke computer als de virtuele machine, voert u de volgende opdracht in een opdrachtpromptvenster in.

windbg -k com:pipe,port=\.\pipe\PipeName,resets=0,reconnect

Als het foutopsporingsprogramma wordt uitgevoerd op een andere fysieke computer dan de virtuele machine, voert u de volgende opdracht in een opdrachtpromptvenster in.

windbg -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect

De foutopsporingssessie starten met behulp van KD

Als u fouten wilt opsporen in een virtuele machine die wordt uitgevoerd op dezelfde fysieke computer als het foutopsporingsprogramma, voert u de volgende opdracht in een verhoogde opdrachtpromptvenster.

kd -k com:pipe,port=\\.\pipe\PipeName,resets=0, opnieuw verbinden

Als u fouten wilt opsporen in een virtuele machine die wordt uitgevoerd op een andere fysieke computer dan het foutopsporingsprogramma, voert u de volgende opdracht in een opdrachtpromptvenster in.

kd -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect

Parameters

VMHost
Hiermee geeft u de naam op van de computer waarop de virtuele machine wordt uitgevoerd.

PipeName
Hiermee geeft u de naam op van de pijp die u op de virtuele machine hebt gemaakt.

resets=0
Hiermee geeft u op dat een onbeperkt aantal resetpakketten naar het doel kan worden verzonden wanneer de host en het doel worden gesynchroniseerd. Gebruik de parameter resets=0 voor Microsoft Virtual PC en andere virtuele machines waarvan de pijpen overtollige bytes verwijderen. Gebruik deze parameter niet voor VMware of andere virtuele machines waarvan de pijpen niet alle overtollige bytes verwijderen.

opnieuw verbinding maken
Zorgt ervoor dat het foutopsporingsprogramma automatisch de verbinding met de pijp verbreekt en opnieuw verbinding maakt als er een lees-/schrijffout optreedt. Wanneer de debugger bij het starten de benoemde pijp niet vindt, zorgt de parameter opnieuw verbinding maken ervoor dat de debugger wacht tot er een pijp met de naam PipeName verschijnt. Gebruik opnieuw verbinden voor virtuele pc's en andere virtuele machines die hun pijpen vernietigen en opnieuw maken tijdens het opnieuw opstarten van een computer. Gebruik deze parameter niet voor VMware of andere virtuele machines die hun pijpen behouden tijdens het opnieuw opstarten van een computer.

Zie KD Command-Line Options of WinDbg Command-Line Optionsvoor meer informatie over aanvullende opdrachtregelopties.

Virtuele machines van de tweede generatie

COM-poorten worden standaard niet weergegeven in virtuele machines van de tweede generatie. U kunt COM-poorten toevoegen via PowerShell of WMI. Als u de COM-poorten wilt weergeven in de Hyper-V Manager-console, moeten ze worden gemaakt met een pad.

Als u kernelfoutopsporing wilt inschakelen met behulp van een COM-poort op een virtuele machine van de tweede generatie, voert u de volgende stappen uit:

  1. Schakel Beveiligd opstarten uit door deze PowerShell-opdracht in te voeren:

    Set-VMFirmware –VmnameVmName–EnableSecureBoot Off

    waarbij VmName de naam van uw virtuele machine is.

  2. Voeg een COM-poort toe aan de virtuele machine door deze PowerShell-opdracht in te voeren:

    Set-VMComPort –VMNameVmName1 \\.\pipe\PipeName

    Met de volgende opdracht configureert u bijvoorbeeld de eerste COM-poort op virtuele machine TestVM om verbinding te maken met benoemde pipe TestPipe op de lokale computer.

    Set-VMComPort –VMName TestVM 1 \\.\pipe\TestPipe

  3. Zodra het foutopsporingsprogramma is gekoppeld en wordt uitgevoerd, stopt en start u de VIRTUELE machine koud om de COM-poorten in de VIRTUELE machine te activeren. De geëmuleerde UARTs zijn niet beschikbaar voor debugging, tenzij ten minste één daadwerkelijk is geconfigureerd met een pijpnaam, en ze kunnen niet dynamisch worden toegevoegd.

  4. Schakel beveiligd opstarten opnieuw in zodra u klaar bent met het bijwerken van de configuratiewijzigingen.

Zie Overzicht van virtuele machines van de tweede generatie voor meer informatie over vm's van de tweede generatie.

Opmerkingen

Als de doelcomputer niet meer reageert, wordt de doelcomputer nog steeds gestopt vanwege een eerdere kernelfoutopsporingsactie of u hebt de -bopdrachtregeloptiegebruikt, wordt het foutopsporingsprogramma onmiddellijk op de doelcomputer ingebroken.

Anders blijft de doelcomputer doordraaien totdat het foutopsporingsprogramma meldt om te stoppen.

Problemen met firewalls en netwerktoegang oplossen

Uw foutopsporingsprogramma (WinDbg of KD) moet toegang hebben via de firewall. Dit kan zelfs het geval zijn voor virtuele seriële poorten die worden ondersteund door netwerkadapters.

Als u door Windows wordt gevraagd om de firewall uit te schakelen wanneer het foutopsporingsprogramma wordt geladen, selecteert u alle drie de vakken.

Afhankelijk van de specifieke kenmerken van de VM die wordt gebruikt, moet u mogelijk de netwerkinstellingen voor uw virtuele machines wijzigen om deze te overbruggen naar de Microsoft Kernel Network Debug Adapter. Anders hebben de virtuele machines geen toegang tot het netwerk.

Windows Firewall

U kunt het Configuratiescherm gebruiken om toegang via de Windows-firewall toe te staan. Open het Configuratiescherm > Systeem en beveiliging en selecteer Een app via Windows Firewall toestaan. Zoek in de lijst met toepassingen Windows GUI Symbol Debugger en Windows Kernel Debugger. Gebruik de selectievakjes om deze twee toepassingen via de firewall toe te staan. Start de foutopsporingstoepassing opnieuw (WinDbg of KD).

VM's van derden

VMWare

Als u de virtuele machine opnieuw start met behulp van de VMWare-faciliteiten (bijvoorbeeld de knop Opnieuw instellen), sluit u WinDbg af en start u WinDbg opnieuw om door te gaan met foutopsporing. Tijdens foutopsporing van virtuele machines verbruikt VMWare vaak 100% van de CPU.

Zie ook

Netwerkopsporing van een virtuele machine instellen met KDNET-

Debuggen handmatig instellen Kernel-Mode

netwerkopsporing instellen voor een host van een virtuele machine