Freigeben über


Einrichten des Kernelmodusdebugging über ein USB 2.0-Kabel manuell

Das Debuggen von Tools für Windows unterstützt das Kerneldebugging über ein USB 2.0-Kabel. In diesem Thema wird beschrieben, wie Sie das USB 2.0-Debugging manuell einrichten.

Der Computer, auf dem der Debugger ausgeführt wird, wird als Hostcomputer bezeichnet, und der Computer, der debugged wird, wird als Zielcomputer bezeichnet.

Für das Debuggen über ein USB 2.0-Kabel ist die folgende Hardware erforderlich:

  • Ein USB 2.0-Debugkabel. Dieses Kabel ist kein standardmäßiges USB 2.0-Kabel, da es über eine zusätzliche Hardwarekomponente verfügt, die es mit der USB2 Debug Device Functional Specification kompatibel macht. Sie finden diese Kabel mit einer Internetsuche nach dem Begriff USB 2.0 Debugkabel.

  • Auf dem Hostcomputer ist ein EHCI-Hostcontroller (USB 2.0)

  • Auf dem Zielcomputer ein EHCI-Hostcontroller (USB 2.0), der das Debuggen unterstützt

Um die Problembehandlung zu vereinfachen, verbinden Sie das Kabel direkt zwischen Dem Ziel- und Hostcomputer, und vermeiden Sie Hubs oder Dockingstationen.

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 alle Hostcontroller, die mit der EHCI-Spezifikation kompatibel sind. Sie können beispielsweise nach Controllern suchen, die als "Erweitert" aufgeführt sind.

  3. Erweitern Sie in UsbView die Knoten der EHCI-Hostcontroller. Suchen Sie nach einem Hinweis, dass ein Hostcontroller das Debuggen unterstützt, und suchen Sie nach der Nummer des Debugports. UsbView zeigt z. B. diese Ausgabe für einen EHCI-Hostcontroller an, der das Debuggen auf Port 1 unterstützt.

    Xxx xxx xxx USB2 Enhanced Host Controller - 293A
    ...
    Debug Port Number:  1
    Bus.Device.Function (in decimal): 0.29.7
    

    Beachten Sie, dass viele EHCI-Hostcontroller das Debuggen auf Port 1 unterstützen, aber einige EHCI-Hostcontroller unterstützen das Debuggen auf Port 2.

  4. Notieren Sie sich die Bus-, Geräte- und Funktionsnummern für den EHCI-Controller, den Sie für das Debuggen verwenden möchten. UsbView zeigt diese Nummer an. Im vorherigen Beispiel ist die Busnummer 0, die Gerätenummer 29 und die Funktionsnummer 7.

  5. Nachdem Sie den EHCI-Controller und die Portnummer identifiziert haben, die das Debuggen unterstützt, besteht der nächste Schritt darin, den physischen USB-Anschluss zu finden, der der richtigen Portnummer zugeordnet ist. Um den physischen Anschluss zu finden, schließen Sie ein beliebiges USB 2.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 Ihr Gerät mit dem EHCI-Hostcontroller und -Port anzeigt, den Sie als Debugport identifiziert haben, haben Sie einen physischen USB-Anschluss gefunden, den Sie zum Debuggen verwenden können. Es könnte sein, dass es keinen externen physischen USB-Anschluss gibt, der einem Debugport auf einem EHCI-Controller zugeordnet ist. In diesem Fall können Sie nach einem physischen USB-Anschluss auf dem Computer suchen. Führen Sie dieselben Schritte aus, um zu ermitteln, ob der interne USB-Anschluss für das Kerneldebugging geeignet ist. Wenn Sie keinen physischen USB-Anschluss (extern oder intern) finden, der einem Debugport zugeordnet ist, können Sie den Computer nicht als Ziel für das Debuggen über ein USB 2.0-Kabel verwenden.

    Hinweis: Eine Ausnahme finden Sie in dieser Anmerkung .

Wichtig

Bevor Sie bcdedit zum Ändern der Startinformationen verwenden, müssen Sie möglicherweise vorübergehend Windows-Sicherheitsfunktionen wie BitLocker und Secure Boot auf dem Test-PC aussetzen. Sie können den sicheren Start wieder aktivieren, nachdem Sie mit dem Debuggen fertig sind und das Kerneldebugging deaktiviert haben.

  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

    Dabei ist TargetName 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 sein, die Sie erstellen, solange sie diese Einschränkungen erfüllt:

    • Die Zeichenfolge darf "debug" nicht an beliebiger Stelle im TargetName in beliebiger Kombination aus Groß- oder Kleinschreibung enthalten. Wenn Sie beispielsweise "DeBuG" oder "DEBUG" an einer beliebigen Stelle im 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 Kleinbuchstabe).
    • Die maximale Länge der Zeichenfolge beträgt 24 Zeichen.
  2. Suchen Sie in Geräte-Manager den USB-Controller, den Sie für das Debuggen verwenden möchten. Unter "Position " auf der Registerkarte "Allgemein " werden die Bus-, Geräte- und Funktionsnummern angezeigt. Geben Sie diesen Befehl ein:

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

dabei sind b, d und f die Bus-, Geräte- und Funktionsnummern für den Hostcontroller. Die Zahlen für Bus, Gerät und Funktion müssen im Dezimalformat vorliegen (z . B. busparams 0,29.7).

  1. Starten Sie den Zielcomputer neu.

Einrichten des Hostcomputers

  1. Stellen Sie sicher, dass der Hostcomputer nicht als Ziel des USB-Debuggings konfiguriert ist. (Öffnen Sie bei Bedarf ein Eingabeaufforderungsfenster als Administrator, geben Sie bcdedit /debug aus und starten Sie es neu.)
  2. Verwenden Sie usbView auf dem Hostcomputer, um die EHCI-Hostcontroller und Ports zu finden, die das Debuggen unterstützen. Schließen Sie nach Möglichkeit ein Ende des USB 2.0-Debugkabels an einen EHCI-Port (auf dem Hostcomputer) an, der das Debuggen nicht unterstützt. Schließen Sie andernfalls das Kabel an einen EHCI-Anschluss auf dem Hostcomputer an.
  3. Schließen Sie das andere Ende des USB 2.0-Debugkabels an den Verbinder an, den Sie zuvor auf dem Zielcomputer identifiziert haben.

Erstmaliges Starten einer Debugsitzung

  1. Ermitteln Sie die Bitanzahl (32-Bit oder 64-Bit) von Windows, die auf dem Hostcomputer ausgeführt wird.
  2. Öffnen Sie auf dem Hostcomputer eine Version von WinDbg (als Administrator), die der Bitanzahl von Windows entspricht, die auf dem Hostcomputer ausgeführt wird. Wenn beispielsweise der Hostcomputer eine 64-Bit-Version von Windows ausführt, öffnen Sie die 64-Bit-Version von WinDbg als Administrator.
  3. Wählen Sie im Menü Datei die Option Kerneldebugging. Öffnen Sie im Dialogfeld "Kerneldebugging" die USB-Registerkarte . Geben Sie den Zielnamen ein, den Sie beim Einrichten des Zielcomputers erstellt haben. Klicken Sie auf OK.

Zu diesem Zeitpunkt wird der USB-Debugtreiber auf dem Hostcomputer installiert. Deshalb ist es wichtig, die Bitness von WinDbg mit der Bitness von Windows übereinzugleichen. Nachdem der USB-Debugtreiber installiert wurde, können Sie entweder die 32-Bit- oder 64-Bit-Version von WinDbg für nachfolgende Debugsitzungen verwenden.

Hinweis : Das USB 2.0-Debugkabel ist tatsächlich zwei Kabel mit einem Dongle in der Mitte. Die Richtung des Dongles ist wichtig; eine Seite macht das Gerät und die andere Seite nicht. Wenn das USB-Debugging nicht funktioniert, versuchen Sie, die Richtung des Dongles zu tauschen. Das heißt, trennen Sie beide Kabel vom Dongle, und tauschen Sie die Seiten, an denen die Kabel angeschlossen sind.

Starten einer Debugsitzung

Verwenden von WinDbg

Öffnen Sie auf dem Hostcomputer WinDbg. Wählen Sie im Menü Datei die Option Kerneldebugging. Öffnen Sie im Dialogfeld "Kerneldebugging" die USB-Registerkarte . Geben Sie den Zielnamen ein, den Sie beim Einrichten des Zielcomputers erstellt haben. Klicken Sie auf OK.

Sie können eine Sitzung auch mit WinDbg 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 /kd /k usb:targetname=TargetName

Was geschieht, wenn USBView einen debugfähigen Anschluss anzeigt, aber nicht den Port anzeigt, der einem physischen Verbinder zugeordnet ist?

Auf einigen Computern zeigt USBView einen debugfähigen Anschluss an, zeigt jedoch nicht den Port an, der einem physischen USB-Anschluss zugeordnet ist. Beispielsweise kann USBView Port 2 als Debugportnummer für einen eHCI-Controller anzeigen.

... USB Enhanced Host Controller ...
...
Debug Port Number:  2
Bus.Device.Function (in decimal): 0.29.0

Wenn Sie USBView auch verwenden, um den einzelnen Port zu betrachten, wird sie als debugfähig aufgeführt.

[Port 2]
Is Port User Connectable: Yes
Is Port Debug Capable: Yes
...
Protocols Supported
  USB 1.1      yes
  USB 2.0      yes
  USB 3.0      no

Wenn Sie jedoch ein USB 2.0-Gerät (z. B. ein Flashlaufwerk) an alle USB-Anschlüsse auf dem Computer anschließen, zeigen USBView Ihr Gerät nie an den Debug-fähigen Anschluss an (Port 2 in diesem Beispiel). USBView zeigt möglicherweise den externen Verbinder an, der einem Port eines xHCI-Controllers zugeordnet ist, wenn der externe Verbinder dem Debug-fähigen Port des eHCI-Controllers zugeordnet ist.

Screenshot der xHCI- und EHCI-Controller in USBView.

In einem solchen Fall können Sie möglicherweise trotzdem kernelmodusdebugging über ein USB 2.0-Kabel einrichten. Im hier gezeigten Beispiel würden Sie das USB 2.0-Debugkabel an den Anschluss anschließen, der dem Anschluss 2 des xHCI-Controllers zugeordnet ist. Anschließend würden Sie Ihre Busparameter auf die Bus-, Geräte- und Funktionsnummern des eHCI-Controllers festlegen (in diesem Beispiel 0.29.0).

bcdedit /set "{dbgsettings}" busparams 0.29.0

Zusätzlicher Support

Tipps zur Problembehandlung und weitere Informationen finden Sie im Microsoft USB-Blog.

Weitere Informationen

Manuelles Einrichten des Debuggens im Kernelmodus