Configurando a depuração do modo kernel USB 3.0 xHCI (KDUSB XHCI-DBC USB 3.0)
As Ferramentas de Depuração para Windows dão suporte à depuração no modo kernel por meio de um cabo USB 3.0. Este artigo descreve como configurar manualmente a depuração USB 3.0.
O computador que executa o depurador é chamado de computador host, e o computador que está sendo depurado é chamado de computador de destino.
A depuração em um cabo USB 3.0 requer o seguinte hardware:
- No computador host, um controlador de host xHCI (USB 3.0)
- No computador de destino, um controlador de host xHCI (USB 3.0) que dá suporte à depuração
- O controlador de host USB do computador de destino deve oferecer suporte à DBC (Debug Capability Interface) Intel xHCI. Para obter mais informações, consulte a especificação xHCI disponível no site da Intel.
Requisitos de cabo
- Um cabo de depuração USB laranja da Microsoft, que é um cabo cruzado AA que possui dois plugues macho tipo A e nenhuma conexão Vbus. Este cabo está disponível em fornecedores como DataPro - Cabo de depuração A/A USB 3.0 Super-Speed.
Para simplificar a solução de problemas, conecte o cabo diretamente entre o computador de destino e o computador host, evitando hubs ou estações de encaixe.
Arquivos de transporte binário
O kdstub.dll é usado para dar suporte ao transporte do depurador KDUSB xHCI-DBC USB 3.0.
Configurar o computador de destino
No computador de destino, inicie a ferramenta UsbView . A ferramenta UsbView está incluída nas Ferramentas de Depuração para Windows. Para um sistema x64, UsbView estaria localizado em C:\Arquivos de Programas (x86)\Windows Kits\10\Tools\kitversion\x64\usbview.exe.
Em UsbView, localize todos os controladores de host xHCI.
Em UsbView, expanda os nós dos controladores de host xHCI. Procure uma indicação de que uma porta no controlador de host dá suporte à depuração.
[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
Anote os números de barramento, dispositivo e função do controlador xHCI que você pretende usar para depuração. UsbView exibe esses números. No exemplo a seguir, o número do barramento é 48, o número do dispositivo é 0 e o número da função é 0.
USB xHCI Compliant Host Controller ... DriverKey: {36fc9e60-c465-11cf-8056-444553540000}\0020 ... Bus.Device.Function (in decimal): 48.0.0
Depois de identificar um controlador xHCI que dá suporte à depuração, a próxima etapa é localizar o conector USB físico associado a uma porta no controlador xHCI. Para localizar o conector físico, conecte qualquer dispositivo USB 3.0 a qualquer conector USB no computador de destino. Atualize o UsbView para ver onde seu dispositivo está localizado. Se o UsbView mostrar seu dispositivo conectado ao controlador de host xHCI escolhido, você encontrou um conector USB físico que pode ser usado para depuração USB 3.0.
Importante
Antes de usar bcdedit
para alterar as informações de inicialização, talvez seja necessário suspender temporariamente os recursos de segurança do Windows, como o BitLocker e a Inicialização Segura no computador de teste.
Reabilite esses recursos de segurança quando o teste terminar e gerencie devidamente o PC de teste, quando os recursos de segurança estiverem desabilitados.
No computador de destino, abra uma janela do Prompt de Comando como Administrador e digite estes comandos:
bcdedit /debug on bcdedit /dbgsettings usb targetname:<TargetName>
TargetName é um nome que você cria para o computador de destino. Observe que TargetName não precisa ser o nome oficial do computador de destino; pode ser qualquer cadeia de caracteres que você criar, desde que atenda a estas restrições:
- A cadeia de caracteres não deve conter "debug" em nenhum lugar do TargetName em nenhuma combinação de letras maiúsculas ou minúsculas. Por exemplo, se você usar "DeBuG" ou "DEBUG" em qualquer lugar em seu nome de destino, a depuração não funcionará corretamente.
- Os únicos caracteres na string são o hífen (-), o sublinhado (_), os dígitos de 0 a 9 e as letras de A a Z (maiúsculas ou minúsculas).
- O comprimento máximo da cadeia de caracteres é de 24 caracteres.
No Gerenciador de Dispositivos, localize o Controlador USB que você pretende usar para depuração. Em Localização na guia Geral , os números de barramento, dispositivo e função são exibidos. Insira este comando:
bcdedit /set "{dbgsettings}" busparams <b.d.f>
B, d e f são os números de barramento, dispositivo e função para o controlador de host USB. Os números bus, device e function devem estar no formato decimal.
Exemplo:
bcdedit /set "{dbgsettings}" busparams 48.0.0
Reinicie o computador de destino.
Desativar gerenciamento de energia
Em alguns casos, as transições de energia podem interferir na depuração por USB 3.0. Para evitar esses problemas, desabilite a suspensão seletiva para o controlador de host xHCI e seu hub raiz, que você está usando para depuração.
No Gerenciador de Dispositivos, navegue até o nó do controlador de host xHCI. Clique com o botão direito do mouse no nó e escolha Propriedades. Se houver uma guia Gerenciamento de energia, abra-a e desmarque a caixa de seleção Permitir que o computador desligue este dispositivo para economizar energia .
No Gerenciador de Dispositivos, navegue até o nó do hub raiz do controlador de host xHCI. Clique com o botão direito do mouse no nó e escolha Propriedades. Se houver uma guia Gerenciamento de energia, abra-a e desmarque a caixa de seleção Permitir que o computador desligue este dispositivo para economizar energia .
Quando terminar de usar o controlador de host xHCI para depuração, reative a suspensão seletiva para o controlador de host xHCI.
Iniciar uma sessão de depuração pela primeira vez
- Conecte um cabo de depuração USB 3.0 às portas USB 3.0 que você escolheu para depuração nos computadores host e de destino.
- Determine o número de bits (32 bits ou 64 bits) do Windows em execução no computador host.
- No computador host, abra uma versão do WinDbg (como Administrador) que corresponda ao número de bits do Windows em execução no computador host. Por exemplo, se o computador host estiver executando uma versão de 64 bits do Windows, abra a versão de 64 bits do WinDbg como Administrador.
- No menu Arquivo, escolha Depuração de kernel. Na caixa de diálogo Depuração de Kernel, abra a guia USB . Insira o nome de destino que você criou ao configurar o computador de destino. Clique em OK.
Neste ponto, o driver de depuração USB é instalado no computador host, e é por isso que é importante corresponder o número de bits do WinDbg ao número de bits do Windows. Depois que o driver de depuração USB for instalado, você poderá usar a versão de 32 bits ou 64 bits do WinDbg para sessões de depuração subsequentes.
Iniciar uma sessão de depuração
Como usar o WinDbg
No computador host, abra o WinDbg. No menu Arquivo, escolha Depuração de kernel. Na caixa de diálogo Depuração de Kernel, abra a guia USB . Insira o nome de destino que você criou ao configurar o computador de destino. Selecione OK.
Você também pode iniciar uma sessão com o WinDbg inserindo o seguinte comando em uma janela do Prompt de Comando, em que TargetName é o nome de destino que você criou ao configurar o computador de destino:
windbg /k usb:targetname=<TargetName>
Como usar o KD
No computador host, abra uma janela do Prompt de Comando e digite o seguinte comando, em que TargetName é o nome de destino que você criou ao configurar o computador de destino:
kd /k usb:targetname=<TargetName>
Reiniciar o computador de destino
Depois que o depurador estiver conectado, reinicie o computador de destino. Uma maneira de fazer reinicie o PC é usar o shutdown -r -t 0
comando do prompt de comando de um administrador.
Depois que o PC de destino for reiniciado, o depurador deverá se conectar automaticamente.
Solução de problemas
Dispositivo USB não reconhecido
Se uma notificação do Windows aparecer no host com o texto USB device not recognized quando você inserir o cabo de depuração, é possível que um problema conhecido de compatibilidade USB 3.1 para 3.1 esteja sendo atingido. Esse problema afeta as configurações de depuração quando o cabo de depuração está conectado a um controlador USB 3.1 no host e a um controlador USB Intel (Ice Lake ou Tiger Lake) 3.1 no destino.
Para obter mais informações e listas de modelos de processador, consulte Ice Lake (microprocessador) e/ou Tiger Lake (microprocessador). Para encontrar o modelo do processador da máquina de destino, abra o aplicativo Configurações e vá para Sistema e depois Sobre. O processador está listado em Especificações do dispositivo.
Para verificar esse problema, abra o Gerenciador de dispositivos e procure por Dispositivo de conexão de depuração USB em controladores Universal Serial Bus. Se este dispositivo não puder ser encontrado, verifique se há um dispositivo desconhecido em Outros dispositivos. Clique com o botão direito do mouse no dispositivo para abrir sua página de propriedades. A caixa de texto de status do dispositivo terá o texto Windows parou este dispositivo porque relatou problemas (Código 43) e O dispositivo USB retornou um descritor USB BOS inválido.
Para contornar esse problema, execute estes comandos em um prompt de comando do administrador para fazer alterações no 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
Em seguida, remova e reinsira o cabo de depuração.
A conexão repete mensagens nas janelas do console do depurador e não pode invadir o destino – SkipPciProbeDebugDevice
Se você encontrar a seguinte mensagem no console do depurador KDNET, não puder iniciar uma invasão no destino ou tiver problemas com determinados comandos (por exemplo, kdfiles), pode ser devido ao KDNET receber um pacote de ping fora de sequência."
... 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.
Esse problema pode ocorrer porque o driver pci.sys está investigando incorretamente o dispositivo de depuração. Para eliminar os erros, crie a seguinte entrada do Registro no dispositivo TARGET em um prompt de comando do administrador.
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\SERVICES\kdnet /v SkipPciProbeDebugDevice /t REG_DWORD /d 1 /f
Em seguida, reinicie a máquina de destino.
shutdown /r /t 0
Depois que o dispositivo for reinicializado, os erros devem desaparecer e os comandos devem funcionar conforme o esperado.
Confira também
Configurar a depuração do modo kernel manualmente
Como configurar a depuração automática do kernel de rede KDNET
Como configurar a depuração do kernel de rede KDNET manualmente
Configurando a depuração do modo kernel USB KDNET EEM (KDNET-EEM-USB)
Configurando a depuração do modo kernel KDNET USB (KDNET-USB)