Compartir a través de


Configuración de la depuración en modo kernel de USB 3.0 xHCI (KDUSB xHCI-DBC USB 3.0)

Herramientas de depuración para Windows admite la depuración en modo kernel a través de un cable USB 3.0. En este artículo se describe cómo configurar manualmente la depuración de USB 3.0.

El equipo que ejecuta el depurador se denomina equipo host y el equipo que se depura se denomina equipo de destino.

La depuración a través de un cable USB 3.0 requiere el siguiente hardware:

  • En el equipo host, un controlador de host xHCI (USB 3.0)
  • En el equipo de destino, un controlador host xHCI (USB 3.0) que admite la depuración
  • El controlador de host USB del equipo de destino debe admitir la interfaz de funcionalidad Intel xHCI-Debug (DBC). Para obtener más información, consulte la especificación xHCI disponible en el sitio web de Intel.

Requisitos de cable

  • Un cable de depuración USB de Microsoft naranja, que es un cable cruzado A-A que tiene dos enchufes tipo A macho y sin conexión Vbus. Este cable está disponible en proveedores como DataPro - USB 3.0 Super-Speed A/A Debugging Cable.

Para simplificar la solución de problemas, conecte el cable directamente entre el equipo de destino y host, evitando los concentradores o las estaciones de acoplamiento.

Archivos de transporte binarios

El kdstub.dll se usa para admitir el transporte del depurador KDUSB xHCI-DBC USB 3.0.

Configuración del equipo de destino

  1. En el equipo de destino, inicie la herramienta UsbView . La herramienta UsbView se incluye en Herramientas de depuración para Windows. Para un sistema x64, UsbView se encuentra en C:\Archivos de programa (x86)\Windows Kits\10\Tools\kitversion\x64\usbview.exe.

  2. En UsbView, busque todos los controladores de host xHCI.

  3. En UsbView, expanda los nodos de los controladores de host xHCI. Busque una indicación de que un puerto en el controlador host admite la depuración.

    [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. Anote los números de bus, dispositivo y función del controlador xHCI que quiere usar para la depuración. UsbView muestra estos números. En el ejemplo siguiente, el número de bus es 48, el número de dispositivo es 0 y el número de función es 0.

    USB xHCI Compliant Host Controller
    ...
    DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0020
    ...
    Bus.Device.Function (in decimal): 48.0.0
    
  5. Después de identificar un controlador xHCI que admita la depuración, el siguiente paso es localizar el conector USB físico asociado a un puerto en el controlador xHCI. Para encontrar el conector físico, conecte cualquier dispositivo USB 3.0 a cualquier conector USB en el equipo de destino. Actualice UsbView para ver dónde se encuentra el dispositivo. Si UsbView muestra el dispositivo conectado al controlador de host xHCI elegido, ha encontrado un conector USB físico que puede usar para la depuración USB 3.0.

Importante

Antes de usar bcdedit para cambiar la información de arranque, es posible que deba suspender temporalmente las características de seguridad de Windows, como BitLocker y arranque seguro en el equipo de prueba. Vuelva a habilitar estas características de seguridad cuando finalicen las pruebas y administre adecuadamente el equipo de prueba cuando las características de seguridad estén deshabilitadas.

  1. En el equipo de destino, abra una ventana del símbolo del sistema como Administrador y escriba estos comandos:

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

    TargetName es un nombre que se crea para el equipo de destino. Tenga en cuenta que TargetName no tiene que ser el nombre oficial del equipo de destino; puede ser cualquier cadena que cree siempre que cumpla estas restricciones:

    • La cadena no debe contener "depurar" en ningún lugar de TargetName en cualquier combinación de mayúsculas o minúsculas. Por ejemplo, si usa "DeBuG" o "DEBUG" en cualquier parte del nombre de destino, la depuración no funciona correctamente.
    • Los únicos caracteres de la cadena son el guión (-), el carácter de subrayado(_), los dígitos del 0 al 9 y las letras A a Z (mayúsculas o minúsculas).
    • La longitud máxima de la cadena es de 24 caracteres.
  2. En Administrador de dispositivos, busque el controlador USB que quiere usar para la depuración. En Ubicación de la pestaña General , se muestran los números de bus, dispositivo y función. Escriba este comando:

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

    B, d y f son los números de bus, dispositivo y función para el controlador de host USB. Los números de bus, dispositivo y función deben estar en formato decimal.

    Ejemplo:

    bcdedit /set "{dbgsettings}" busparams 48.0.0
    
  3. Reinicie el equipo de destino.

Deshabilitar la administración de energía

En algunos casos, las transiciones de energía pueden interferir con la depuración a través de USB 3.0. Para evitar estos problemas, deshabilite la suspensión selectiva para el controlador de host xHCI y su centro raíz, que se usa para la depuración.

  1. En Administrador de dispositivos, vaya al nodo del controlador de host xHCI. Haga clic con el botón derecho en el nodo y elija Propiedades. Si hay una pestaña Administración de energía, abra la pestaña y desactive la casilla Permitir que el equipo apague este dispositivo para guardar la energía .

  2. En Administrador de dispositivos, vaya al nodo del centro raíz del controlador de host xHCI. Haga clic con el botón derecho en el nodo y elija Propiedades. Si hay una pestaña Administración de energía, abra la pestaña y desactive la casilla Permitir que el equipo apague este dispositivo para guardar energía .

Cuando termine de usar el controlador de host xHCI para la depuración, vuelva a habilitar la suspensión selectiva para el controlador de host xHCI.

Iniciar una sesión de depuración por primera vez

  1. Conecte un cable de depuración USB 3.0 a los puertos USB 3.0 que ha elegido para la depuración en el host y los equipos de destino.
  2. Determine el valor de bits (32 o 64 bits) de Windows que se ejecuta en el equipo host.
  3. En el equipo host, abra una versión de WinDbg (como administrador) que coincida con el bit de Windows que se ejecuta en el equipo host. Por ejemplo, si el equipo host ejecuta una versión de 64 bits de Windows, abra la versión de 64 bits de WinDbg como administrador.
  4. En el menú Archivo, elija Depuración de kernel. En el cuadro de diálogo Depuración de kernel, abra la pestaña USB . Escriba el nombre de destino que creó al configurar el equipo de destino. Haga clic en OK.

En este momento, el controlador de depuración USB se instala en el equipo host, por lo que es importante que coincida con el bit de WinDbg con el bitness de Windows. Una vez instalado el controlador de depuración USB, puede usar la versión de 32 o 64 bits de WinDbg para las sesiones de depuración posteriores.

Inicio de una sesión de depuración

Uso de WinDbg

En el equipo host, abra WinDbg. En el menú Archivo, elija Depuración de kernel. En el cuadro de diálogo Depuración de kernel, abra la pestaña USB . Escriba el nombre de destino que creó al configurar el equipo de destino. Seleccione Aceptar.

También puede iniciar una sesión con WinDbg escribiendo el siguiente comando en una ventana del símbolo del sistema, donde TargetName es el nombre de destino que creó al configurar el equipo de destino:

windbg /k usb:targetname=<TargetName>

Uso de KD

En el equipo host, abra una ventana del símbolo del sistema y escriba el siguiente comando, donde TargetName es el nombre de destino que creó al configurar el equipo de destino:

kd /k usb:targetname=<TargetName>

Reinicio del equipo de destino

Una vez conectado el depurador, reinicie el equipo de destino. Una manera de reiniciar el equipo es usar el comando desde el shutdown -r -t 0 símbolo del sistema de un administrador.

Una vez reiniciado el equipo de destino, el depurador debe conectarse automáticamente.

Solución de problemas

Dispositivo USB no reconocido

Si aparece una notificación de Windows en el host con el dispositivo USB de texto no reconocido al insertar el cable de depuración, es posible que se alcance un problema de compatibilidad conocido de USB 3.1 a 3.1. Este problema afecta a las configuraciones de depuración cuando el cable de depuración está conectado a un controlador USB 3.1 en el host y un controlador USB Intel (Ice Lake o Tiger Lake) 3.1 en el destino.

Para obtener más información y listados de modelos de procesador, consulte Ice Lake (microprocesador) o Tiger Lake (microprocesador). Para buscar el modelo de procesador de la máquina de destino, abra la aplicación Configuración y vaya a Sistema y, a continuación, Acerca de. El procesador aparece en Especificaciones del dispositivo.

Para comprobar este problema, abra Administrador de dispositivos y busque Dispositivo de conexión de depuración USB en Controladores de bus serie universales. Si no se encuentra este dispositivo, compruebe si hay un dispositivo desconocido en Otros dispositivos. Haga clic con el botón derecho en el dispositivo para abrir su página de propiedades. El cuadro de texto estado del dispositivo tendrá el texto Windows detenido este dispositivo porque ha notificado problemas (código 43) y el dispositivo USB devolvió un descriptor DE BOS USB no válido.

Para solucionar este problema, ejecute estos comandos desde un símbolo del sistema de administrador para realizar cambios en el Registro:

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

A continuación, quite y vuelva a insertar el cable de depuración.

Los mensajes de reintento de conexión en las ventanas de la consola del depurador y no se pueden interrumpir en el destino: SkipPciProbeDebugDevice

Si encuentra el siguiente mensaje en la consola del depurador de KDNET, no puede iniciar una interrupción en el destino o experimentar problemas con determinados comandos (por ejemplo, kdfiles), puede deberse a que KDNET recibe un paquete ping fuera de secuencia".

... 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.

Este problema puede ocurrir porque el controlador pci.sys está sondeando incorrectamente el dispositivo de depuración. Para eliminar los errores, cree la siguiente entrada del Registro en el dispositivo TARGET en un símbolo del sistema del administrador.

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

A continuación, reinicie la máquina de destino.

shutdown /r /t 0

Una vez que el dispositivo se reinicie, los errores deben desaparecer y los comandos deben funcionar según lo previsto.

Consulte también

Configuración manual de la depuración en modo kernel

Configuración automática de la depuración del kernel de red KDNET

Configuración manual de la depuración del kernel de red KDNET

Configuración de la depuración en modo kernel de EEM de KDNET USB (KDNET-EEM-USB)

Configuración de la depuración en modo kernel de KDNET USB (KDNET-USB)