Compartir a través de


Captura de un seguimiento de eventos USB con Logman

En este artículo se proporciona información sobre el uso de la herramienta Logman para capturar un seguimiento de eventos ETW USB. Logman es una herramienta de seguimiento integrada en Windows. Puede usar Logman para capturar eventos en un archivo de registro de seguimiento de eventos.

Requisitos previos

Los archivos de registro de seguimiento de eventos pueden crecer muy rápidamente, pero un archivo de registro más pequeño es más fácil de navegar y transmitir más fácilmente. Antes de iniciar un seguimiento, considere la posibilidad de seguir los pasos siguientes para excluir eventos extraños del registro para que pueda centrarse en la actividad del dispositivo que desea examinar:

  • Desconecte los dispositivos USB no críticos que no sean de interés. Menos dispositivos dan lugar a seguimientos más pequeños, lo que facilita la lectura y el análisis.
  • Si el sistema tiene un teclado o mouse USB, escriba los comandos de seguimiento mediante Escritorio remoto en su lugar.
  • Acote el inicio y el final del seguimiento tanto como sea posible en torno a las operaciones de interés.
  • Si solo está interesado en una determinada categoría de eventos USB, puede usar palabras clave para filtrar los eventos que se registran. Para obtener más información, vea la sección Comentarios.

Los seguimientos de eventos de la pila de controladores USB 3.0 son similares a los seguimientos de la pila de controladores USB 2.0, que se introdujeron en Windows 7. Los seguimientos de eventos de la pila de controladores USB 2.0 se pueden capturar en un equipo Windows 8. La forma de capturar seguimientos de eventos de pilas de controladores USB 2.0 y USB 3.0 es similar. Puede capturar eventos de la pila de controladores USB 2.0 o USB 3.0 de forma independiente. Al conectar un dispositivo USB 2.0 a un controlador de host USB 3.0, obtendrá seguimientos de eventos de la pila de controladores USB 3.0. En ese caso, verá nuevos eventos de pila de controladores USB 3.0 para un dispositivo USB 2.0.

Instrucciones

Para recopilar eventos de seguimiento USB

  1. Abra una ventana del símbolo del sistema que tenga privilegios administrativos. Para ello, seleccione Inicio, escriba cmd en el cuadro de búsqueda, Seleccione y mantenga presionado (o haga clic con el botón derecho) cmd.exe y, a continuación, seleccione Ejecutar como administrador.

  2. En la ventana del símbolo del sistema, escriba estos comandos para iniciar una sesión de captura:

    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
    
    

    Una vez completado cada uno de estos comandos, Se muestra Logman The command completed successfully.

  3. Realice las operaciones que quiera capturar. Por ejemplo, para capturar eventos para la enumeración de dispositivos, puede conectar una unidad flash USB que aparezca como un "dispositivo desconocido" en Administrador de dispositivos. Mantenga abierta la ventana del símbolo del sistema.

  4. Detenga la sesión después de haber completado el escenario. Escriba estos comandos para finalizar la sesión de captura:

    Para detener la recopilación de eventos de puerto y concentrador USB, ejecute el siguiente comando:

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

La sesión de captura anterior genera un archivo etl, denominado usbtrace.etl. El archivo de seguimiento se almacena en %SystemRoot%\Tracing\usbtrace.etl (C:\Windows\Tracing\usbtrace.etl). Mueva el archivo a otra ubicación o cámbielo para evitar sobrescribirlo al capturar la siguiente sesión.

El archivo contiene seguimientos de eventos de las pilas de controladores USB 3.0 y USB 2.0. Si desea reducir los seguimientos de eventos a una sola pila de controladores USB, quite la otra pila de controladores de la siguiente sesión de seguimiento. Para ello, modifique la secuencia de comandos que se muestra en el paso 2 para quitar las líneas de actualización de logman correspondientes a la pila de controladores que desea quitar de la sesión de seguimiento.

Comentarios

Captura de filtros para eventos de pila de controladores USB 3.0

Observe las palabras clave ETW, como Default y PartialDataBusTrace , en los comandos de captura de Logman. Esas palabras son palabras clave ETW que indican los tipos de eventos que desea ver. Puede usar palabras clave ETW para filtrar los eventos que los controladores USB escriben en un registro de seguimiento y personalizar la cantidad de información que desea ver sobre los eventos capturados desde la pila de controladores USB 3.0. Los eventos que coinciden con cualquiera de las palabras clave se guardan. Tenga en cuenta que este método de filtrado se usa en tiempo de captura, no durante el análisis.

Puede filtrar eventos en función de las palabras clave en función de sus requisitos. Estas son palabras clave para filtrar eventos de pila de controladores USB 3.0:

Palabra clave ETW Descripción
Valor predeterminado Muestra los eventos que son útiles para la solución de problemas generales. Los eventos son similares a los eventos ETW usb 2.0, pero no incluyen ningún evento de transferencia USB.
StateMachine Muestra las transiciones de la máquina de estado interno del controlador. Los eventos no se incluyen en la palabra clave Default .
Resumen Muestra los eventos de información del dispositivo al principio del seguimiento y captura el estado inicial del árbol USB. Los eventos rundown de información del dispositivo son importantes para guardar para que el seguimiento contenga detalles, como los descriptores USB y la descripción del dispositivo USB, de los dispositivos conectados. Estos eventos se incluyen en la palabra clave Default . Cuando no use la palabra clave Default , debe usar la palabra clave Rundown . Los eventos rundown restantes proporcionan información sobre las transiciones de estado recientes de las máquinas de estado interno del controlador. Estos eventos se incluyen en la palabra clave StateMachine .
Power Muestra un subconjunto de eventos Predeterminados . Muestra los eventos de transición de energía del dispositivo.
IRP Muestra un subconjunto de eventos Predeterminados . Los eventos muestran IRP del controlador de cliente e IRP resultantes de las solicitudes en modo de usuario. Sin embargo, las solicitudes válidas de transferencia USB (URB) no se muestran con la palabra clave IRP y requieren que se muestre HeadersBusTrace, PartialDataBusTrace o FullDataBusTrace .
HeadersBusTrace Muestra todos los eventos de transferencia USB, pero no guarda paquetes de datos.
PartialDataBusTrace Muestra todos los eventos de transferencia USB y guarda una carga limitada de datos de bus.
FullDataBusTrace Muestra todos los eventos de transferencia USB y guarda hasta 4 KB de datos de bus para transferencias masivas, interrupciones y control. Tenga en cuenta que solo se registra el primer búfer de una MDL encadenada. Los datos de bus isócronos nunca se registran (aunque se guarda la estructura de solicitudes URB_ISOCH_TRANSFER ). Para obtener más información, consulte Envío de MDL encadenados y Cómo transferir datos a puntos de conexión isócronos USB.
HWVerifyHost Muestra un subconjunto de eventos Predeterminados . Los eventos indican cuándo se produce un error en el hardware del controlador de host USB.
HWVerifyHub Muestra un subconjunto de eventos Predeterminados . Los eventos indican cuándo se produce un error en el hardware del concentrador USB.
HWVerifyDevice Muestra un subconjunto de eventos Predeterminados . Los eventos indican cuándo se produce un error en el hardware del dispositivo USB.

Por ejemplo, esta es una secuencia de comandos que inician una sesión para capturar transiciones de alimentación del dispositivo USB. Debido a la selección de proveedores (la pila de controladores USB 3.0), los eventos solo se capturan para dispositivos conectados de bajada de un controlador de host USB 3.0.

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

Captura de filtros para eventos de energía

Una palabra clave ETW útil para dispositivos USB es la marca PowerDiagnostics del controlador de puerto USB. Cuando se usa esta palabra clave, el controlador de puerto registra el controlador de host y la información del punto de conexión, pero omite todos los eventos que describen las transferencias. Si no necesita ver los eventos de transferencia, puede usar la palabra clave PowerDiagnostics para reducir el tamaño de un registro de seguimiento hasta un 85 %. Especifique la palabra clave PowerDiagnostics al iniciar el seguimiento, como se muestra en el ejemplo siguiente:

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

Si el registro de seguimiento filtrado tiene muchas programaciones asincrónicas del controlador de host habilitadas y deshabilitadas, puede filtrarlos al ver el registro mediante un filtro Netmon, como se muestra en el ejemplo siguiente:

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

Para obtener más información sobre los filtros de Netmon, vea "Filtros de Netmon USB" en Caso práctico: Solución de problemas de un dispositivo USB desconocido mediante ETW y Netmon.

A veces resulta útil tener los eventos de transferencia en el registro de seguimiento, como las solicitudes de concentrador y las solicitudes de dispositivo que producen errores como un error XACT o un punto de espera. En primer lugar, puede capturar un registro sin los eventos de transferencia y analizar ese registro más pequeño. A continuación, vuelva a ejecutar el seguimiento sin filtrar después de tener una comprensión general de los problemas en el escenario del problema.