Freigeben über


Einrichten des Kernelmodusdebuggens über ein USB 3.0-Kabel

Debugtools für Windows unterstützen das Debuggen im Kernelmodus über ein USB 3.0-Kabel. In diesem Artikel wird beschrieben, wie Sie das USB 3.0-Debugging manuell einrichten.

Der Computer, auf dem der Debugger ausgeführt wird, heißt Hostcomputer, und der zu debuggende Computer wird als Zielcomputer bezeichnet.

Zum Debuggen über ein USB 3.0-Kabel ist die folgende Hardware erforderlich:

  • Ein USB 3.0-Debugkabel, bei dem es sich um ein A-A-Crossover-Kabel handelt, das über zwei männliche Typ-A-Stecker und keine Vbus-Verbindung verfügt
  • Auf dem Hostcomputer ein xHCI-Hostcontroller (USB 3.0)
  • Auf dem Zielcomputer ein xHCI-Hostcontroller (USB 3.0), der das Debuggen unterstützt

Um die Problembehandlung zu vereinfachen, schließen Sie das Kabel direkt zwischen dem Ziel- und dem Hostcomputer an, um Hubs oder Dockingstationen zu vermeiden.

Einrichten des Zielcomputers

  1. Starten Sie auf dem Zielcomputer das UsbView-Tool . Das UsbView-Tool ist in Debugtools für Windows enthalten.

  2. Suchen Sie in UsbView nach allen xHCI-Hostcontrollern.

  3. Erweitern Sie in UsbView die Knoten der xHCI-Hostcontroller. Suchen Sie nach einem Hinweis, dass ein Port auf dem Hostcontroller das Debuggen unterstützt.

    [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. Notieren Sie sich die Bus-, Geräte- und Funktionsnummern für den xHCI-Controller, den Sie zum Debuggen verwenden möchten. UsbView zeigt diese Zahlen an. Im folgenden Beispiel ist die Busnummer 48, die Gerätenummer 0 und die Funktionsnummer 0.

    USB xHCI Compliant Host Controller
    ...
    DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0020
    ...
    Bus.Device.Function (in decimal): 48.0.0
    
  5. Nachdem Sie einen xHCI-Controller identifiziert haben, der das Debuggen unterstützt, besteht der nächste Schritt darin, den physischen USB-Anschluss zu suchen, der einem Port auf dem xHCI-Controller zugeordnet ist. Um den physischen Anschluss zu finden, schließen Sie jedes USB 3.0-Gerät an einen beliebigen USB-Anschluss auf dem Zielcomputer an. Aktualisieren Sie UsbView, um zu sehen, wo sich Ihr Gerät befindet. Wenn UsbView zeigt, dass Ihr Gerät mit dem ausgewählten xHCI-Hostcontroller verbunden ist, haben Sie einen physischen USB-Anschluss gefunden, den Sie für usb 3.0-Debugging verwenden können.

Wichtig

bcdedit Bevor Sie zum Ändern der Startinformationen verwenden, müssen Sie möglicherweise Windows-Sicherheitsfeatures wie BitLocker und Secure Boot auf dem Test-PC vorübergehend anhalten. Aktivieren Sie diese Sicherheitsfeatures nach Abschluss des Tests erneut, und verwalten Sie den Test-PC entsprechend, wenn die Sicherheitsfeatures deaktiviert sind.

  1. Öffnen Sie auf dem Zielcomputer ein Eingabeaufforderungsfenster als Administrator, und geben Sie die folgenden Befehle ein:

    bcdedit /debug on
    bcdedit /dbgsettings usb targetname:<TargetName>
    

    TargetName ist ein Name, den Sie für den Zielcomputer erstellen. Beachten Sie, dass TargetName nicht der offizielle Name des Zielcomputers sein muss. Es kann sich um eine beliebige Zeichenfolge handeln, die Sie erstellen, solange sie die folgenden Einschränkungen erfüllt:

    • Die Zeichenfolge darf an keiner Beliebigen Stelle im TargetName in einer Kombination aus Groß- oder Kleinbuchstaben "debuggen" enthalten. Wenn Sie beispielsweise "DeBuG" oder "DEBUG" an einer beliebigen Stelle in Ihrem Zielnamen verwenden, funktioniert das Debuggen nicht ordnungsgemäß.
    • Die einzigen Zeichen in der Zeichenfolge sind der Bindestrich (-), der Unterstrich(_), die Ziffern 0 bis 9 und die Buchstaben A bis Z (Groß- oder Kleinschreibung).
    • Die maximale Länge der Zeichenfolge beträgt 24 Zeichen.
  2. Suchen Sie in Geräte-Manager den USB-Controller, den Sie zum Debuggen verwenden möchten. Unter Standort auf der Registerkarte Allgemein werden die Bus-, Geräte- und Funktionsnummern angezeigt. Geben Sie diesen Befehl ein:

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

    B, d und f sind die Bus-, Geräte- und Funktionsnummern für den USB-Hostcontroller. Die Bus-, Geräte- und Funktionsnummern müssen im Dezimalformat vorliegen.

    Beispiel:

    bcdedit /set "{dbgsettings}" busparams 48.0.0
    
  3. Starten Sie den Zielcomputer neu.

Deaktivieren der Energieverwaltung

In einigen Fällen können Energieübergänge das Debuggen über USB 3.0 beeinträchtigen. Um diese Probleme zu vermeiden, deaktivieren Sie das selektive Anhalten für den xHCI-Hostcontroller und seinen Stammhub, den Sie zum Debuggen verwenden.

  1. Navigieren Sie in Geräte-Manager zum Knoten für den xHCI-Hostcontroller. Klicken Sie mit der rechten Maustaste auf den Knoten, und wählen Sie Eigenschaften aus. Wenn eine Registerkarte Energieverwaltung vorhanden ist, öffnen Sie die Registerkarte, und deaktivieren Sie das Kontrollkästchen Zulassen, dass der Computer dieses Gerät zum Energiesparen ausschaltet .

  2. Navigieren Sie in Geräte-Manager zum Knoten für den Stammhub des xHCI-Hostcontrollers. Klicken Sie mit der rechten Maustaste auf den Knoten, und wählen Sie Eigenschaften aus. Wenn es eine Registerkarte Energieverwaltung gibt, öffnen Sie die Registerkarte, und deaktivieren Sie das Kontrollkästchen Zulassen, dass der Computer dieses Gerät zum Energiesparen ausschaltet .

Wenn Sie die Verwendung des xHCI-Hostcontrollers zum Debuggen abgeschlossen haben, aktivieren Sie das selektive Anhalten für den xHCI-Hostcontroller erneut.

Erstmaliges Starten einer Debugsitzung

  1. Schließen Sie ein USB 3.0-Debugkabel an die USB 3.0-Ports an, die Sie für das Debuggen auf den Host- und Zielcomputern ausgewählt haben.
  2. Bestimmen Sie die Bitigkeit (32-Bit oder 64-Bit) von Windows, die auf dem Hostcomputer ausgeführt wird.
  3. Öffnen Sie auf dem Hostcomputer eine WinDbg-Version (als Administrator), die der Bitanzahl von Windows entspricht, die auf dem Hostcomputer ausgeführt wird. Wenn auf dem Hostcomputer beispielsweise eine 64-Bit-Version von Windows ausgeführt wird, öffnen Sie die 64-Bit-Version von WinDbg als Administrator.
  4. Wählen Sie im Menü Dateidie Option Kerneldebuggen aus. Öffnen Sie im Dialogfeld Kerneldebuggen die Registerkarte USB . Geben Sie den Zielnamen ein, den Sie beim Einrichten des Zielcomputers erstellt haben. Klicken Sie auf OK.

An diesem Punkt wird der USB-Debugtreiber auf dem Hostcomputer installiert, weshalb es wichtig ist, die Bitigkeit von WinDbg mit der Bitanzahl von Windows abzugleichen. Nachdem der USB-Debugtreiber installiert wurde, können Sie entweder die 32-Bit- oder die 64-Bit-Version von WinDbg für nachfolgende Debugsitzungen verwenden.

Starten einer Debugsitzung

Verwenden von WinDbg

Öffnen Sie winDbg auf dem Hostcomputer. Wählen Sie im Menü Dateidie Option Kerneldebuggen aus. Öffnen Sie im Dialogfeld Kerneldebuggen die Registerkarte USB . Geben Sie den Zielnamen ein, den Sie beim Einrichten des Zielcomputers erstellt haben. Klicken Sie auf OK.

Sie können eine Sitzung mit WinDbg auch starten, indem Sie den folgenden Befehl in ein Eingabeaufforderungsfenster eingeben, wobei TargetName der Zielname ist, den Sie beim Einrichten des Zielcomputers erstellt haben:

windbg /k usb:targetname=<TargetName>

Verwenden von KD

Öffnen Sie auf dem Hostcomputer ein Eingabeaufforderungsfenster, und geben Sie den folgenden Befehl ein, wobei TargetName der Zielname ist, den Sie beim Einrichten des Zielcomputers erstellt haben:

kd /k usb:targetname=<TargetName>

Neustarten des Zielcomputers

Sobald der Debugger verbunden ist, starten Sie den Zielcomputer neu. Eine Möglichkeit, den PC neu zu starten, besteht darin, den Befehl von der shutdown -r -t 0 Eingabeaufforderung eines Administrators zu verwenden.

Nachdem der Ziel-PC neu gestartet wurde, sollte der Debugger automatisch eine Verbindung herstellen.

Problembehandlung

USB-Gerät nicht erkannt

Wenn auf dem Host eine Windows-Benachrichtigung mit dem Text USB-Gerät nicht erkannt wird, wenn Sie das Debugkabel einlegen, ist es möglich, dass ein bekanntes USB 3.1 bis 3.1-Kompatibilitätsproblem auftritt. Dieses Problem wirkt sich auf Debugkonfigurationen aus, wenn das Debugkabel mit einem USB 3.1-Controller auf dem Host und einem Intel 3.1-USB-Controller (Ice Lake oder Tiger Lake) auf dem Ziel verbunden ist.

Weitere Informationen und Prozessormodellauflistungen finden Sie unter Ice Lake (Mikroprozessor) und oder Tiger Lake (Mikroprozessor). Um das Prozessormodell des Zielcomputers zu finden, öffnen Sie die Einstellungen-App, und wechseln Sie zu System und dann zu Info. Der Prozessor ist unter Gerätespezifikationen aufgeführt.

Um dieses Problem zu überprüfen, öffnen Sie Geräte-Manager, und suchen Sie unter Universal Serial Bus-Controller nach USB-Debugverbindungsgerät. Wenn dieses Gerät nicht gefunden werden kann, suchen Sie unter Andere Geräte nach einem unbekannten Gerät. Klicken Sie mit der rechten Maustaste auf das Gerät, um die Eigenschaftenseite zu öffnen. Das Textfeld Gerät status hat den Text Windows hat dieses Gerät beendet, da es Probleme gemeldet hat (Code 43), und das USB-Gerät hat einen ungültigen USB BOS-Deskriptor zurückgegeben.

Um dieses Problem zu umgehen, führen Sie die folgenden Befehle an einer Administratoreingabeaufforderung aus, um Änderungen an der Registrierung vorzunehmen:

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

Entfernen Sie dann das Debugkabel, und setzen Sie es erneut ein.

Weitere Informationen

Manuelles Einrichten des Kernelmodusdebuggings