Partilhar via


Configuração da depuração USB KDNET EEM Kernel-Mode (KDNET-EEM-USB)

As Ferramentas de Depuração para Windows suportam a depuração do kernel através de um cabo USB usando o Modo de Emulação Ethernet (EEM) Este tópico descreve como configurar o USB EEM usando o utilitário kdnet.exe.

O computador que executa o depurador é chamado de computador hoste o computador que está sendo depurado é chamado de computador de destino.

Kernel-Mode Requisitos do dispositivo USB EEM

É necessário o seguinte:

  • No computador de destino, um controlador Synopsys USB 3.0 conectado a uma porta USB tipo C.

  • No computador anfitrião, é necessária uma porta USB 3.0 acessível externamente.

  • Atualização de outubro de 2020 do Windows 10 (20H2) ou posterior

O transporte KDNET-EEM-USB pode ser configurado para:

  • Dispositivo de depuração PCI. Esses dispositivos de depuração são definidos usando dbgsettings::busparams=seg.bus.dev.fun.
  • ACPI-DBG2 Dispositivos de depuração para tabelas. Esses dispositivos de depuração são configurados usando dbgsettings::busparams=1|2|3, onde 1|2|3 se refere ao elemento específico da entrada da matriz ACPI DBG2-Table que contém a configuração do dispositivo de depuração.

Requisitos para cabos

  • É necessário um cabo USB 3.0 Tipo C para Tipo A padrão para conectar a porta host tipo A à porta de destino tipo C.

Arquivos de transporte binários

Os binários kd_0C_8086.dll para x64 e kd_8003_5143.dll para ARM são usados para suportar o transporte do depurador KDNET-EEM-USB.

Confirme se um controlador USB suportado está disponível no destino

No computador de destino, inicie o Gerenciador de dispositivos.

Confirme se o Synopsys USB 3.0 Dual-Role Controller está listado.

Captura de ecrã do Gestor de Dispositivos a apresentar o nó USB com o Synopsys USB 3.0 Dual-Role controlador realçado.

Determinar qual porta de depuração usar quando várias portas estiverem disponíveis

Depois de identificar uma porta que suporte a depuração, a próxima etapa é localizar o conector USB físico associado a essa porta.

Por exemplo, no Surface Pro X, utilize a parte inferior das duas portas USB C para depuração KDNET EEM.

Fotografia do lado de um Surface Pro X com duas portas USB-C.

Use kdnet.exe para confirmar o suporte ao dispositivo e exibir o valor de busparams

Dispositivos Intel / AMD 64

As opções de depuração BCDEDIT são armazenadas no repositório BCD (Dados de Configuração de Arranque). Para obter mais informações, consulte BCDEdit /debug.

Dispositivos ARM

Os dispositivos ARM usam a tabela ACPI DBG2 para configurar o depurador, onde os busparams apontam para a entrada da tabela DBG2. Para especificar a porta de depuração a usar, utiliza-se o busparm. Normalmente, apenas o primeiro busparam é usado e é 0 ou 1, dependendo do dispositivo. Normalmente, os dispositivos não usam busparams=0, uma vez que a entrada da tabela 0 DBG2 é normalmente reservada para o dispositivo serial COM. Para obter mais informações sobre a tabela ACPI DBG2, consulte Microsoft Debug Port Table 2 (DBG2).

Use kdnet.exe para configurar o KDNET EEM USB

Utilize o utilitário kdnet.exe para exibir informações sobre os parâmetros dos controladores que suportam a depuração de transporte KDNET-EEM-USB.

  1. Confirme se as Ferramentas de Depuração do Windows estão instaladas no host e no sistema de destino. Para obter informações sobre como baixar e instalar as ferramentas de depurador, consulte Ferramentas de depuração para Windows.

  2. Localize o utilitário kdnet.exe. Por padrão, os arquivos estão localizados aqui.

    C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

  3. No computador de destino, abra uma janela da Linha de Comandos enquanto Administrador. Insira este comando para verificar se o computador de destino tem um adaptador de rede suportado e para exibir o valor de busparams.

    C:\KDNET>kdnet.exe
    
    Network debugging is not supported on any of the NICs in this machine.
    KDNET supports NICs from Intel, Broadcom, Realtek, Atheros, Emulex, Mellanox
    and Cisco.
    
    Network debugging is supported on the following USB controllers:
    busparams=1, Device-mode USB controller with Vendor ID: 5143 (Default)
    busparams=2, Device-mode USB controller with Vendor ID: 5143
    busparams=3, Device-mode USB controller with Vendor ID: 5143
    busparams=4, Device-mode USB controller with Vendor ID: 5143
    
    This Microsoft hypervisor supports using KDNET in guest VMs.
    
  4. Como a saída do kdnet.exe indica que um controlador USB suportado com um valor de busparams de 1 está disponível, podemos prosseguir.

Configurando o computador de destino

Use o utilitário kdnet.exe para definir as configurações do depurador no PC de destino, seguindo estas etapas.

Importante

Antes de usar o bcdedit para alterar as informações de inicialização, talvez seja necessário suspender temporariamente os recursos de segurança do Windows, como BitLocker e Inicialização Segura, no computador de teste. Você pode reativar o Bit Locker e a Inicialização Segura assim que terminar de usar o BCDEdit para atualizar as informações de inicialização. Gerencie adequadamente o PC de teste, quando os recursos de segurança estiverem desativados.

  1. Use o comando mostrado abaixo para definir o valor de busparams, o endereço IP e a porta do sistema host e gerar uma chave de conexão única. O endereço IP 169.254.255.255 é usado para todas as conexões USB EMM.

  2. Escolha um endereço de porta exclusivo para cada par de destino/host com o qual você trabalha, dentro do intervalo recomendado de 50000-50039. 50005 é mostrado no exemplo.


   C:\>kdnet.exe 169.254.255.255 50005

   Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
   Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
  1. Copie a chave devolvida para um arquivo de bloco de notas chamado .txt. No exemplo mostrado, a chave gerada tem um valor de:

    2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p

  2. Use o comando BCDEdit para verificar se os parâmetros estão conforme o esperado. Para obter mais informações, consulte BCDEdit /dbgsettings

   C:\>bcdedit /dbgsettings

   busparams               1
   key                     2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
   debugtype               NET
   hostip                  169.254.255.255
   port                    50005
   dhcp                    No
   The operation completed successfully.

Desative o firewall no anfitrião

No host, desative o firewall para o depurador.

Ligar o WinDbg ao alvo para depuração de kernel

No computador host, abra o WinDbg. No menu File, escolha Kernel Debug. Na caixa de diálogo de Depuração do Kernel, abra o separador Net. Cole o número da porta e a chave que guardou no ficheiro .txt do Notepad anteriormente. Selecione OK.

Você também pode iniciar uma sessão WinDbg abrindo uma janela de Prompt de Comando e inserindo o seguinte comando, onde é a porta que você selecionou acima e é a chave que foi retornada por kdnet.exe acima. Cole a chave que guardou anteriormente no ficheiro .txt do bloco de notas.

windbg -k -d net:port=<YourDebugPort>,key=<YourKey>

Reinicie o computador de destino

Quando o depurador está ligado, reinicie o computador alvo. Uma maneira de fazer a reinicialização do PC, é usar o comando shutdown -r -t 0 a partir do prompt de comando de um administrador.

Depois que o PC de destino for reiniciado, o depurador deve se conectar automaticamente.

Solução de problemas

Objetivo de Resolução de Problemas

Confirme se o adaptador de rede KDNET-USB-EMM do Windows está presente em Adaptadores de rede no Gerenciador de dispositivos do Windows.

As propriedades do dispositivo mostram quando o controlador está reservado para uso pelo depurador de kernel do Windows.

Captura de ecrã do Gestor de Dispositivos a apresentar o nó USB com o Synopsys USB 3.0 Dual-Role Controller indicando que o controlador está reservado.

Solução de problemas do host

Confirme se o adaptador de rede KDNET-USB-EMM do Windows está presente em Adaptadores de rede no Gerenciador de dispositivos do Windows.

No host, a conexão KDNET-EEM usando a porta USB Tipo A é mostrada.

Captura de ecrã do Gestor de Dispositivos a apresentar o nó de rede com uma entrada de adaptador de rede USB-EEM KDNET do Windows.

Intel PCI - A conexão tenta novamente 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 certos comandos (por exemplo, kdfiles), isso pode ser devido ao KDNET receber um pacote 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 acontecer 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

Uma vez que o dispositivo é reinicializado, os erros devem desaparecer e os comandos devem funcionar conforme o esperado.

Ver também

Configurando a depuração do kernel da rede KDNET automaticamente

Configurando a depuração do kernel de rede KDNET manualmente

Configurando a depuração de modo kernel USB 3.0 xHCI-DBC (KDUSB)

Configuração da depuração no modo de núcleo USB KDNET (KDNET-USB)