Share via


Erfassen einer USB-Ereignisablaufverfolgung mit Logman

Dieser Artikel enthält Informationen zur Verwendung des Logman-Tools zum Erfassen einer USB ETW-Ereignisablaufverfolgung. Logman ist ein in Windows integriertes Ablaufverfolgungstool. Sie können Logman verwenden, um Ereignisse in einer Ereignisablaufverfolgungsprotokolldatei zu erfassen.

Voraussetzungen

Ereignisablaufverfolgungsprotokolldateien können sehr schnell wachsen, aber eine kleinere Protokolldatei ist einfacher zu navigieren und einfacher zu übertragen. Bevor Sie eine Ablaufverfolgung starten, sollten Sie die folgenden Schritte ausführen, um zusätzliche Ereignisse aus dem Protokoll auszuschließen, damit Sie sich auf die Geräteaktivität konzentrieren können, die Sie untersuchen möchten:

  • Trennen Sie alle nicht kritischen USB-Geräte, die nicht das gerät von Interesse sind. Weniger Geräte führen zu kleineren Ablaufverfolgungen, die das Lesen und Analysieren erleichtern.
  • Wenn Ihr System über eine USB-Tastatur oder -Maus verfügt, geben Sie stattdessen die Ablaufverfolgungsbefehle mithilfe von Remotedesktop ein.
  • Begrenzen Sie den Anfang und das Ende der Ablaufverfolgung so weit wie möglich um die vorgänge von Interesse.
  • Wenn Sie nur an einer bestimmten Kategorie von USB-Ereignissen interessiert sind, können Sie Schlüsselwörter verwenden, um die aufgezeichneten Ereignisse zu filtern. Weitere Informationen finden Sie in den Hinweisen.

Ereignisablaufverfolgungen aus dem USB 3.0-Treiberstapel ähneln den USB 2.0-Treiberstapelverfolgungen, die in Windows 7 eingeführt wurden. Ereignisablaufverfolgungen aus dem USB 2.0-Treiberstapel können auf einem Windows 8 Computer erfasst werden. Die Art und Weise, wie Sie Ereignisablaufverfolgungen von USB 2.0- und USB 3.0-Treiberstapeln erfassen, ist ähnlich. Sie können Ereignisse vom USB 2.0- oder USB 3.0-Treiberstapel unabhängig erfassen. Wenn Sie ein USB 2.0-Gerät an einen USB 3.0-Hostcontroller anschließen, erhalten Sie Ereignisablaufverfolgungen aus dem USB 3.0-Treiberstapel. In diesem Fall werden neue USB 3.0-Treiberstapelereignisse für ein USB 2.0-Gerät angezeigt.

Anweisungen

So erfassen Sie USB-Ablaufverfolgungsereignisse

  1. Öffnen Sie ein Eingabeaufforderungsfenster mit Administratorrechten. Wählen Sie hierzu Start aus, geben Sie cmd in das Suchfeld ein, cmd.exe auswählen und halten (oder klicken Sie mit der rechten Maustaste darauf), und wählen Sie dann Als Administrator ausführen aus.

  2. Geben Sie im Eingabeaufforderungsfenster die folgenden Befehle ein, um eine Aufzeichnungssitzung zu starten:

    logman create trace -n usbtrace -o %SystemRoot%\Tracing\usbtrace.etl -nb 128 640 -bs 128
    logman update trace -n usbtrace -p Microsoft-Windows-USB-USBXHCI (Default,PartialDataBusTrace)
    logman update trace -n usbtrace -p Microsoft-Windows-USB-UCX (Default,PartialDataBusTrace)
    logman update trace -n usbtrace -p Microsoft-Windows-USB-USBHUB3 (Default,PartialDataBusTrace)
    logman update trace -n usbtrace -p Microsoft-Windows-USB-USBPORT
    logman update trace -n usbtrace -p Microsoft-Windows-USB-USBHUB
    logman update trace -n usbtrace -p Microsoft-Windows-Kernel-IoTrace 0 2
    logman start -n usbtrace
    
    

    Nach Abschluss jeder dieser Befehle wird Logman angezeigt. The command completed successfully.

  3. Führen Sie die Vorgänge aus, die Sie erfassen möchten. Um beispielsweise Ereignisse für die Geräteaufzählung zu erfassen, können Sie ein USB-Flashlaufwerk anschließen, das in Geräte-Manager als "Unbekanntes Gerät" angezeigt wird. Lassen Sie das Eingabeaufforderungsfenster geöffnet.

  4. Beenden Sie die Sitzung, nachdem Sie das Szenario abgeschlossen haben. Geben Sie die folgenden Befehle ein, um die Erfassungssitzung zu beenden:

    Sie können die USB-Hub- und Portereignissammlung beenden, indem Sie den folgenden Befehl ausführen:

    logman stop -n usbtrace
    logman delete -n usbtrace
    move /Y %SystemRoot%\Tracing\usbtrace_000001.etl %SystemRoot%\Tracing\usbtrace.etl
    
    

Die vorherige Erfassungssitzung generiert eine etl-Datei namens usbtrace.etl. Die Ablaufverfolgungsdatei wird unter %SystemRoot%\Tracing\usbtrace.etl (C:\Windows\Tracing\usbtrace.etl) gespeichert. Verschieben Sie die Datei an einen anderen Speicherort, oder benennen Sie sie um, um zu vermeiden, dass sie beim Erfassen der nächsten Sitzung überschrieben wird.

Die Datei enthält Ereignisablaufverfolgungen aus den USB 3.0- und USB 2.0-Treiberstapeln. Wenn Sie die Ereignisablaufverfolgungen auf nur einen USB-Treiberstapel reduzieren möchten, entfernen Sie den anderen Treiberstapel aus der nächsten Ablaufverfolgungssitzung. Dazu können Sie die in Schritt 2 gezeigte Befehlssequenz ändern, um die Zeilen "logman update" zu entfernen, die dem Treiberstapel entsprechen, den Sie aus der Ablaufverfolgungssitzung entfernen möchten.

Hinweise

Erfassen von Filtern für USB 3.0-Treiberstapelereignisse

Beachten Sie ETW-Schlüsselwörter wie Default und PartialDataBusTrace in den Logman-Erfassungsbefehlen. Bei diesen Wörtern handelt es sich um ETW-Schlüsselwörter, die die Typen von Ereignissen angeben, die Sie anzeigen möchten. Sie können ETW-Schlüsselwörter verwenden, um die Ereignisse zu filtern, die USB-Treiber in ein Ablaufverfolgungsprotokoll schreiben, und anpassen, wie viele Informationen Sie zu Ereignissen anzeigen möchten, die aus dem USB 3.0-Treiberstapel erfasst wurden. Ereignisse, die mit einem Ihrer Schlüsselwörter übereinstimmen, werden gespeichert. Beachten Sie, dass diese Filtermethode zur Erfassungszeit und nicht während der Analyse verwendet wird.

Sie können Ereignisse basierend auf Schlüsselwörtern filtern, je nach Ihren Anforderungen. Hier finden Sie Schlüsselwörter zum Filtern von USB 3.0-Treiberstapelereignissen:

ETW-Schlüsselwort (keyword) BESCHREIBUNG
Standard Zeigt Ereignisse an, die für die allgemeine Problembehandlung nützlich sind. Die Ereignisse ähneln USB 2.0 ETW-Ereignissen, enthalten aber keine USB-Übertragungsereignisse.
StateMachine Zeigt treiberinterne Zustandscomputerübergänge an. Die Ereignisse sind nicht in der Standard-Schlüsselwort (keyword) enthalten.
Heruntergekommenen Zeigt Geräteinformationsereignisse am Anfang der Ablaufverfolgung an und erfasst den Startzustand der USB-Struktur. Die Geräteinformationsausführungsereignisse sind wichtig zu speichern, sodass die Ablaufverfolgung Details enthält, z. B. die USB-Deskriptoren und die USB-Gerätebeschreibung, von verbundenen Geräten. Diese Ereignisse sind im Standard-Schlüsselwort (keyword) enthalten. Wenn Sie nicht die Standard-Schlüsselwort (keyword) verwenden, sollten Sie die Rundown-Schlüsselwort (keyword) verwenden. Die verbleibenden Rundownereignisse enthalten Informationen zu den letzten Zustandsübergängen der treiberinternen Zustandscomputer. Diese Ereignisse sind im StateMachine-Schlüsselwort (keyword) enthalten.
Energie Zeigt eine Teilmenge von Standardereignissen an. Zeigt Geräteenergiewechselereignisse an.
IRP Zeigt eine Teilmenge von Standardereignissen an. Die Ereignisse zeigen IRPs vom Clienttreiber und IRPs, die sich aus Benutzermodusanforderungen ergeben. Gültige USB-Übertragungsanforderungen (URB) werden jedoch nicht mit dem IRP-Schlüsselwort (keyword) angezeigt und erfordern HeadersBusTrace, PartialDataBusTrace oder FullDataBusTrace, um angezeigt zu werden.
HeaderBusTrace Zeigt alle USB-Übertragungsereignisse an, speichert jedoch keine Datenpakete.
PartialDataBusTrace Zeigt alle USB-Übertragungsereignisse an und speichert eine begrenzte Nutzlast von Busdaten.
FullDataBusTrace Zeigt alle USB-Übertragungsereignisse an und speichert bis zu 4 KB Busdaten für Massen-, Interrupt- und Steuerungsübertragungen. Beachten Sie, dass nur der erste Puffer einer verketteten MDL protokolliert wird. Isochrone Busdaten werden nie protokolliert (obwohl die URB_ISOCH_TRANSFER Anforderungsstruktur gespeichert wird). Weitere Informationen finden Sie unter Senden verketteter MDLs und Übertragen von Daten an isochrone USB-Endpunkte.
HWVerifyHost Zeigt eine Teilmenge von Standardereignissen an. Die Ereignisse geben an, wenn ein Fehler in der USB-Hostcontrollerhardware auftritt.
HWVerifyHub Zeigt eine Teilmenge von Standardereignissen an. Die Ereignisse geben an, wenn ein Fehler in der USB-Hubhardware auftritt.
HWVerifyDevice Zeigt eine Teilmenge von Standardereignissen an. Die Ereignisse geben an, wenn ein Fehler in der USB-Gerätehardware auftritt.

Hier sehen Sie beispielsweise eine Abfolge von Befehlen, die eine Sitzung starten, um USB-Gerätestromübergänge zu erfassen. Aufgrund der Auswahl der Anbieter (USB 3.0-Treiberstapel) werden Ereignisse nur für Geräte erfasst, die nach einem USB 3.0-Hostcontroller verbunden sind.

logman create trace -n usbtrace -o %SystemRoot%\Tracing\usbtrace.etl -nb 128 640 -bs 128
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBXHCI (Rundown,Power)
logman update trace -n usbtrace -p Microsoft-Windows-USB-UCX (Rundown,Power)
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBHUB3 (Rundown,Power)
logman update trace -n usbtrace -p Microsoft-Windows-Kernel-IoTrace 0 2
logman start -n usbtrace

Erfassen von Filtern für Energieereignisse

Ein nützlicher ETW-Schlüsselwort (keyword) für USB-Geräte ist das PowerDiagnostics-Flag des USB-Porttreibers. Wenn Sie diese Schlüsselwort (keyword) verwenden, protokolliert der Porttreiber Hostcontroller- und Endpunktinformationen, lässt jedoch alle Ereignisse aus, die Übertragungen beschreiben. Wenn Sie die Übertragungsereignisse nicht sehen müssen, können Sie die PowerDiagnostics-Schlüsselwort (keyword) verwenden, um die Größe eines Ablaufverfolgungsprotokolls um bis zu 85 Prozent zu reduzieren. Geben Sie die PowerDiagnostics-Schlüsselwort (keyword) an, wenn Sie die Ablaufverfolgung starten, wie im folgenden Beispiel gezeigt:

Logman start Usbtrace -p Microsoft-Windows-USB-USBPORT PowerDiagnostics -o usbtrace.etl -ets -nb 128 640 -bs 128

Logman update Usbtrace -p Microsoft-Windows-USB-USBHUB –ets

Wenn in Ihrem gefilterten Ablaufverfolgungsprotokoll viele asynchrone Hostcontrollerzeitpläne aktiviert und Ereignisse deaktiviert werden, können Sie diese beim Anzeigen des Protokolls mithilfe eines Netmon-Filters herausfiltern, wie im folgenden Beispiel gezeigt:

NOT (Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Host Controller Async Schedule Enable"
OR Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Host Controller Async Schedule Disable")

Weitere Informationen zu Netmon-Filtern finden Sie unter "USB Netmon-Filter" in der Fallstudie: Problembehandlung für ein unbekanntes USB-Gerät mithilfe von ETW und Netmon.

Manchmal ist es hilfreich, die Übertragungsereignisse in Ihrem Ablaufverfolgungsprotokoll zu haben, z. B. Hubanforderungen und Geräteanforderungen, die zu Fehlern wie einem XACT-Fehler oder einem Stillstand führen. Sie können zunächst ein Protokoll ohne die Übertragungsereignisse erfassen und dieses kleinere Protokoll analysieren. Führen Sie dann die Ablaufverfolgung erneut aus, ohne zu filtern, nachdem Sie ein allgemeines Verständnis der Probleme in Ihrem Problemszenario haben.