Delen via


Foutopsporing in KDNET USB-kernelmodus instellen (KDNET-USB)

Foutopsporingsprogramma's voor Windows ondersteunt foutopsporing in kernelmodus via een USB 3.0-kabel met behulp van KDNET via USB. In dit artikel wordt beschreven hoe u deze transportoptie configureert.

De computer waarop het foutopsporingsprogramma wordt uitgevoerd, wordt de hostcomputergenoemd en de computer die wordt opgespoord, wordt de doelcomputergenoemd.

Voor foutopsporing via een USB 3.0-kabel is de volgende hardware vereist:

  • Op de hostcomputer, een xHCI USB 3.0+ hostcontroller en USB3-poort.
  • Op de doelcomputer, een xHCI USB 3.0+ hostcontroller en een USB3-poort die ondersteuning biedt voor foutopsporing (DBC)
  • De USB-hostcontroller van de doelcomputer moet ondersteuning bieden voor de Intel xHCI Debug Capability Interface (DBC). Raadpleeg voor meer informatie de xHCI-specificatie die beschikbaar is op de Intel-website.

Binaire transportbestanden

Het kdstub.dll en kdnic.sys stuurprogramma worden gebruikt ter ondersteuning van het KDNET-USB foutopsporingsprogrammatransport.

Kabelvereisten

  • Een oranje Microsoft USB-foutopsporingskabel, een A-A-crossover-kabel met twee mannelijke type-A-stekkers en geen Vbus-aansluiting. Deze kabel is verkrijgbaar bij leveranciers zoals DataPro - USB 3.0 Super-Speed A/A-foutopsporingskabel.

  • Een standaard USB 3.0 Type C naar Type A-adapter is vereist om het hosttype A-poort te verbinden met de doeltype C-poort.

Ter vereenvoudiging van de probleemoplossing sluit u de kabel rechtstreeks tussen de doelcomputer en de hostcomputer en vermijdt u hubs of dockingstations.

De doelcomputer instellen

  1. Zoek en start het hulpprogramma UsbView op de doelcomputer. Het hulpprogramma UsbView is opgenomen in Hulpprogramma's voor foutopsporing voor Windows. Voor een x64-systeem zou UsbView zich in C:\Program Files (x86)\Windows Kits\10\Tools\KitVersion\x64\usbview.exebevinden.

  2. Zoek in UsbView alle xHCI-hostcontrollers.

  3. Vouw in UsbView de knooppunten van de xHCI-hostcontrollers uit. Zoek naar een indicatie dat een poort op de hostcontroller ondersteuning biedt voor foutopsporing.

    [Port1]
    
    Is Port User Connectable:         yes
    Is Port Debug Capable:            yes
    Companion Port Number:            3
    Companion Hub Symbolic Link Name: USB#ROOT_HUB30#5&32bab638&0&0#{...}
    Protocols Supported:
     USB 1.1:                         no
     USB 2.0:                         no
     USB 3.0:                         yes
    
  4. Noteer de bus-, apparaat- en functienummers voor de xHCI-controller die u wilt gebruiken voor foutopsporing. UsbView geeft deze nummers weer. In het volgende voorbeeld is het busnummer 48, het apparaatnummer 0 en het functienummer 0.

    USB xHCI Compliant Host Controller
    ...
    DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0020
    ...
    Bus.Device.Function (in decimal): 48.0.0
    
  5. Als u de busparameters wilt bevestigen, gebruikt u Apparaatbeheer. Zoek in Apparaatbeheer de USB-controller die u wilt gebruiken voor foutopsporing. Onder Locatie op het tabblad Algemeen worden de bus-, apparaat- en functienummers weergegeven. b, d en f zijn de bus-, apparaat- en functienummers voor de USB3-hostcontroller. De bus-, apparaat- en functienummers moeten de decimale notatie hebben.

  6. U kunt ook kdnet.exe gebruiken om informatie over de USB-controller te verzamelen.

    C:\Program Files (x86)\Windows Kits\10\Debuggers\x64>kdnet
    
    Network debugging is supported on the following USB controllers:
    busparams=0.20.0, Intel(R) USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)
    
    This Microsoft hypervisor supports using KDNET in guest VMs.
    
  7. Nadat u een xHCI-controller hebt geïdentificeerd die ondersteuning biedt voor foutopsporing, is de volgende stap het vinden van de fysieke USB-connector die is gekoppeld aan een poort op de xHCI-controller. Als u de fysieke connector wilt vinden, sluit u een USB 3.0-apparaat aan op een USB-connector op de doelcomputer. Vernieuw UsbView om te zien waar uw apparaat zich bevindt. Als UsbView uw apparaat laat zien dat is verbonden met de door u gekozen xHCI-hostcontroller, hebt u een fysieke USB-connector gevonden die u kunt gebruiken voor USB 3.0-foutopsporing.

Belangrijk

Voordat u bcdedit of kdnet.exe gebruikt om opstartinformatie 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 beheer de test-pc op de juiste manier wanneer de beveiligingsfuncties zijn uitgeschakeld.

  1. Kies een uniek <port address> doel-/hostpaar waarmee u werkt, binnen het aanbevolen bereik van 50000-50039. 50005 wordt weergegeven in de onderstaande voorbeelden.

  2. Zoek het hulpprogramma KDNet.exe in de map WDK-foutopsporingsprogramma die overeenkomt met uw CPU-type, bijvoorbeeld x64.

  3. Open op de doelcomputer een opdrachtpromptvenster als administrator en voer deze opdracht in om kernelfoutopsporing met -k de optie in te schakelen. De -w, -b en -h schakelen kernelfoutopsporing in voor winload-, bootmgr- en hypervisorsysteemtoepassingen. Zie WinDbg - Opstartopties voor opdrachtregels voor meer informatie over de WinDbg-opties.

    kdnet.exe 169.254.255.255 50005 -k
    
    • 169.254.255.255 het niet-routeerbare link-lokale statische IP-adres moet worden gebruikt voor KDNET via USB3.
    • kdnet.exe retourneert een sleutel w.x.y.z die door WinDbg wordt gebruikt om verbinding te maken met het doelapparaat.

    Als u een specifieke USB-poort wilt gebruiken, gebruikt u de parameter -busparams .

    kdnet.exe -busparams 0.13.0 169.254.255.255 50005 -k
    

    Het gebruik van het KDNET-hulpprogramma wordt aanbevolen. Met dit hulpprogramma worden opties ingesteld die ingewikkelder zijn om in te stellen met bcdedit, evenals het controleren en instellen van ondersteunende registerwaarden voor PCI en energiebeheer.

    bcdedit /dbgsettings NET hostip:169.254.255.255 port:50001 key:1.2.3.4 busparams:0.20.0 noDhcp
    

Energiebeheer uitschakelen

In sommige gevallen kunnen energieovergangen de foutopsporing via USB 3.0 verstoren. Om deze problemen te voorkomen, schakelt u selectief onderbreken uit voor de xHCI-hostcontroller en de bijbehorende hoofdhub, die u gebruikt voor foutopsporing.

  1. Navigeer in Apparaatbeheer naar het knooppunt voor de xHCI-hostcontroller. Klik met de rechtermuisknop op het knooppunt en kies Eigenschappen. Als er een tabblad Energiebeheer is, opent u het tabblad en schakelt u het selectievakje Toestaan dat de computer dit apparaat uitschakelt om energie te besparen .

  2. Navigeer in Apparaatbeheer naar het knooppunt voor de hoofdhub van de xHCI-hostcontroller. Klik met de rechtermuisknop op het knooppunt en kies Eigenschappen. Als er een tabblad Energiebeheer is, opent u het tabblad en schakelt u het selectievakje Toestaan dat de computer dit apparaat uitschakelt om energie te besparen .

Wanneer u klaar bent met het gebruik van de xHCI-hostcontroller voor foutopsporing, schakelt u selectief onderbreken opnieuw in voor de xHCI-hostcontroller.

Een foutopsporingssessie starten met WinDbg

  1. Sluit een USB 3.0-foutopsporingskabel aan op de geïdentificeerde USB 3.0-poorten die u hebt gekozen voor foutopsporing op de host- en doelcomputers.

  2. Open op de hostcomputer een versie van WinDbg (Als Administrator) die overeenkomt met het aantal bits van Windows dat op de hostcomputer draait. Als op de hostcomputer bijvoorbeeld een 64-bits versie van Windows wordt uitgevoerd, opent u de 64-bits versie van WinDbg als administrator.

  3. Kies Koppelen aan kernel in het menu Bestand. Open in het dialoogvenster Kernelfoutopsporing het tabblad Net . Voer de volgende gegevens in en klik op OK.

    • Het <port address>, dat uniek is voor elk doel-/hostpaar en binnen het aanbevolen bereik van 50000-50039 valt, werd als invoer opgegeven toen kdnet.exe werd uitgevoerd.

    • De <session key> w.x.y.z die is gegenereerd toen kdnet.exe werd uitgevoerd en de waarde ervan werd weergegeven in de opdrachtuitvoer.

Opdrachtregelsessie met WinDbg

U kunt ook een sessie starten met WinDbg door deze opdracht in te voeren in een opdrachtpromptvenster.

Windbg /k NET:port=<port address>,key=<session key>

De doelcomputer opnieuw opstarten

Zodra het foutopsporingsprogramma is geladen en klaar is om te gaan, start u de doelcomputer opnieuw op. Een manier om de pc opnieuw op te starten, is door de shutdown -r -t 0 opdracht te gebruiken via cmd van een beheerder.

Nadat de doel-pc opnieuw is opgestart, moet het foutopsporingsprogramma automatisch verbinding maken.

Problemen oplossen

USB-apparaat wordt niet herkend

Als er een Windows-melding op de host wordt weergegeven met de tekst USB-apparaat niet herkend wanneer u de foutopsporingskabel invoegt, is het mogelijk dat een bekend probleem met de compatibiliteit van USB 3.1 naar 3.1 optreedt. Dit probleem is van invloed op foutopsporingsconfiguraties wanneer de foutopsporingskabel is aangesloten op een USB 3.1-controller op de host en een Intel (Ice Lake of Tiger Lake) 3.1 USB-controller op het doel.

Zie Ice Lake (microprocessor) en Tiger Lake (microprocessor) voor meer informatie en processormodelvermeldingen. Als u het processormodel van de doelcomputer wilt vinden, opent u de app Instellingen en gaat u naar Systeem en vervolgens naar Over. Processor wordt vermeld onder Apparaatspecificaties.

Als u dit probleem wilt controleren, opent u Apparaatbeheer en zoekt u een USB-foutopsporingsverbindingsapparaat onder Universal Serial Bus-controllers. Als dit apparaat niet kan worden gevonden, controleert u op een onbekend apparaat onder Andere apparaten. Klik met de rechtermuisknop op het apparaat om de eigenschappenpagina te openen. In het statusvak van het apparaat wordt de tekst weergegeven: Windows heeft dit apparaat gestopt omdat het problemen heeft gerapporteerd (Code 43) en het USB-apparaat een ongeldige USB BOS-descriptor heeft geretourneerd.

Als u dit probleem wilt omzeilen, voert u deze opdrachten uit vanaf een beheerdersopdrachtprompt om wijzigingen aan te brengen in het register:

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\349500E00000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\045E06560000 /v SkipBOSDescriptorQuery /t REG_DWORD /d 1 /f

Wees voorzichtig bij het rechtstreeks bewerken van het register, omdat onjuiste wijzigingen kunnen leiden tot systeeminstabiliteit.

Berichten over de verbindingsopsporing in de consolevensters voor foutopsporingsprogramma's en kunnen niet inbreken in het doel - SkipPciProbeDebugDevice

Als u het volgende bericht in de KDNET-foutopsporingsprogramma-console tegenkomt, geen inbraak kan initiëren in het doel of problemen ondervindt met bepaalde opdrachten (bijvoorbeeld kdfiles), kan dit worden veroorzaakt door KDNET dat een out-of-sequence ping-pakket ontvangt.

... Retry sending the same data packet for 128 times.

The transport connection between host kernel debugger and target Windows seems lost.
please try resync with target, recycle the host debugger, or reboot the target Windows.

Dit probleem kan optreden omdat het pci.sys-stuurprogramma het foutopsporingsapparaat test. Als u deze foutberichten wilt elimineren, maakt u de volgende registervermelding op het TARGET-apparaat via een opdrachtprompt van de beheerder.

Met deze instelling kan het foutopsporingsprogramma ook verbinding maken als het eerste KD-transport geen verbinding kan maken tijdens het opstarten, bijvoorbeeld als het foutopsporingsapparaat niet kan worden geconfigureerd tijdens het opstarten.

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\SERVICES\kdnet /v SkipPciProbeDebugDevice /t REG_DWORD /d 1 /f

Start vervolgens de doelcomputer opnieuw op.

shutdown /r /t 0

Zodra het apparaat opnieuw is opgestart, moeten de fouten verdwijnen en moeten opdrachten werken zoals verwacht.

NO_KDNIC instelling voor verbeterde prestaties en betrouwbaarheid

Als een ethernet-NIC op de doel-pc is geïnstalleerd, kunnen extra betrouwbaarheids- en prestatieverbeteringen worden bereikt door de optie in te NO_KDNIC stellen.

bcdedit /set {current} loadoptions NO_KDNIC

Toevoegen NO_KDNIC is optioneel en kan alleen worden gebruikt als het doel een extra NIC, Wi-Fi of USB-poort heeft om een USB-Ethernet-adapter te verbinden om netwerktoegang tot Windows te bieden.

Door toe te voegen NO_KDNIC wordt voorkomen dat het kdnic.sys-stuurprogramma (een stuurprogramma op basis van een minipoorttimer) op KDNET wordt uitgevoerd, wat betekent dat Windows TCP/IP-verkeer niet wordt gerouteerd via KDNET-transport. Vervolgens kan het KDNET-transport alleen worden gebruikt om foutopsporingsgerelateerde pakketten te routeren tussen het doel-KDNET en het foutopsporingsprogramma van de host.

Dit kan helpen bij netwerkprestaties die kunnen worden beïnvloed wanneer kdnic.sys stuurprogramma wordt uitgevoerd boven op kdnet. In deze situatie blijft de target altijd actief, waardoor stroomdruppeltests worden verhinderd of vertragingen optreden bij het openen van de target via RDP. Dit komt doordat de KDNET-interface zowel foutopsporingspakketten als Windows TCP/IP-netwerkpakketten moet routeren wanneer kdnic.sys wordt uitgevoerd.

Automatisch opnieuw instellen van host-USB-controller

Soms kan het foutopsporingsprogramma een bange USB-stackconditie tegenkomen die kan worden veroorzaakt door een eerder mislukte USB-inventarisatie. Dit leidt ertoe dat het foutopsporingsprogramma geen verbinding kan maken met de doelcomputer, zelfs wanneer alle instellingen correct zijn geconfigureerd.

In IC-scenario's kan dit probleem worden opgelost door handmatig\re-inschakelen van de bovenliggende USB-controller uit te schakelen. Voor andere scenario's, zoals geautomatiseerde testlabs, zijn handmatige stappen zoals deze niet haalbaar. Door de RestartKdNetUsbDebugDevice instelling in te schakelen, zal de foutopsporingsprogrammaclient automatisch controleren op mislukte USB-inventarisatie en de USB-stack opnieuw instellen wanneer een bang apparaat wordt gedetecteerd. Hierdoor kan het foutopsporingsprogramma verbinding maken zonder tussenkomst van de gebruiker. Deze functionaliteit is ingebouwd in de clienttoepassing voor foutopsporingsprogramma's en is dus alleen actief wanneer de foutopsporingsprogrammaclient wordt uitgevoerd en de instelling is ingeschakeld.

Inschakelen:

Optie 1: Voer vanaf de foutopsporingsprogrammaprompt de volgende opdracht uit.

kd> dx Debugger.Settings.Debug.Advanced.RestartKdNetUsbDebugDevice=true

Waarschuwing

Mogelijk kunt u de strategie niet gebruiken om de optie in te stellen als het USB-foutopsporingsapparaat al niet kan inventariseren, omdat hiermee wordt voorkomen dat de sessie verbinding maakt met en inbreekt in het doel, zodat u nooit bij een functionele foutopsporingsprogrammaprompt komt.

Optie 2: Ga vanuit de (nieuwe) Windbg-toepassing naar 'Bestand' -> 'Instellingen' - 'Instellingen' -> Instellingen voor kernelfoutopsporing en klik op het selectievakje 'Automatisch opnieuw instellen van host-USB-controller inschakelen wanneer dat nodig is'. Start vervolgens als normaal vanuit het dialoogvenster 'Koppelen aan kernel'.

Optie 3: maak (of wijzig bestaand) config.xml bestand om de RestartKdNetUsbDebugDevice instelling op te nemen. Het bestand config.xml wordt geladen vanuit dezelfde map als de clienttoepassing voor foutopsporingsprogramma' kd.exe of (verouderd) windbg.exe. Als er niet één aanwezig is, maakt u een nieuw bestand met de naam config.xml met de volgende inhoud:

<?xml version="1.0" encoding="utf-8"?>
<Settings Version="2">
  <Namespace Name="Debug">
    <Namespace Name="Advanced">
      <Setting Name="RestartKdNetUsbDebugDevice" Type="VT_BOOL" Value="true"></Setting>
    </Namespace>
  </Namespace>
</Settings>

Als er al een config.xml aanwezig is, voegt u het <Setting Name="RestartKdNetUsbDebugDevice" Type="VT_BOOL" Value="true"></Setting> XML-element samen in het Debug.Advanced knooppunt in het bestaande XML-document.

Zie ook

Automatisch KDNET-netwerk kerneldebugging instellen

KDNET-netwerkkern-debugging handmatig configureren

Foutopsporing in kernelmodus handmatig instellen

USB 3.0 xHCI-DBC kernel-modusfoutopsporing (KDUSB) instellen

Het instellen van USB KDNET EEM Kernel-Mode debugging (KDNET-EEM-USB)