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)

Las herramientas de depuración para Windows admiten la depuración en modo núcleo 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.

Para realizar la depuración a través de un cable USB 3.0, se necesita 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 host USB del equipo de destino debe admitir la interfaz de funcionalidad de depuración (DBC) Intel xHCI. 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 naranja de Microsoft, que es un cable cruzado A-A con dos conectores 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 archivo kdstub.dll se utiliza para admitir el protocolo de 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 un mensaje que indique 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 indica que su dispositivo está conectado al controlador host xHCI de su elección, ha encontrado un conector USB físico que puede usar para la depuración de 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 "debug" 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 de targetname, 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 el Administrador de dispositivos, localice el controlador USB que quiere usar para la depuración. Bajo Ubicación en 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 host xHCI y su concentrador raíz que se usan 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 de Administración de energía, abra la pestaña y desactive la casilla Permitir que el equipo apague este dispositivo para ahorrar energía.

  2. En Administrador de dispositivos, vaya al nodo del concentrador raíz del controlador 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 host xHCI para la depuración, vuelva a habilitar la suspensión selectiva para el controlador 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 ordenador host y en los ordenadores de destino.
  2. Determine la arquitectura (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 la arquitectura de bits 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 del 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 el valor de bits de WinDbg coincida con el 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 del 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 de Command Prompt, 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 shutdown -r -t 0 desde el 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 texto Dispositivo USB no reconocido al insertar el cable de depuración, es posible que exista un problema de compatibilidad conocido entre USB 3.1 y 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 a un controlador USB 3.1 Intel (Ice Lake o Tiger Lake) 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 del equipo, abra la aplicación Configuración y vaya a Sistema, luego a Acerca de. El procesador aparece en Especificaciones del dispositivo.

Para comprobar este problema, abra el Administrador de dispositivos y busque Dispositivo de conexión de depuración USB en Controladores de bus serie universal. 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 ha detenido este dispositivo porque ha notificado problemas (código 43) y el dispositivo USB devolvió un descriptor BOS USB no válido.

Para solucionar este problema, ejecute estos comandos desde un símbolo del sistema con privilegios 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 e inserte de nuevo el cable de depuración.

Mensajes de reintentos de conexión en las ventanas de la consola del depurador y no se puede iniciar una interrupción en el destino: SkipPciProbeDebugDevice

Si aparece el siguiente mensaje en la consola del depurador de KDNET, no puede iniciar una interrupción en el destino, o experimenta 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 mediante USB KDNET EEM (KDNET-EEM-USB)

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