Configurar a depuração automática do kernel de rede KDNET

As Ferramentas de Depuração para Windows dão suporte à depuração de kernel em uma rede. Este artigo descreve como configurar automaticamente a depuração de rede usando a ferramenta de configuração kdnet.exe.

O computador que executa o depurador é chamado de computador host, e o computador que está sendo depurado é chamado de computador de destino. O computador host deve estar executando o Windows 7 ou posterior, e o computador de destino deve estar executando o Windows 8 ou posterior.

Determinar o endereço IP do computador host.

  1. Confirme se os PCs de destino e host estão conectados a um hub ou comutador de rede usando um cabo de rede indicado.

  2. No computador host, abra um prompt de comando e digite IPConfig para exibir a configuração do IP.

  3. Na saída do comando, localize o endereço IPv4 do adaptador Ethernet.

...

Ethernet adapter Ethernet:
...

IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
...

Como alternativa, use Configurações, Rede e Internet, Ethernet para coletar informações do endereço IPv4.

  1. Anote o endereço IPv4 do adaptador de rede que você pretende usar para depuração.

Configurar os computadores host e de destino

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

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

  2. Localize os arquivos kdnet.exe e VerifiedNICList.xml. Por padrão, os arquivos estão no seguinte local:

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

    Essas instruções pressupõem que ambos os PCs estejam executando uma versão de 64 bits do Windows no destino e no host. Se esse não for o caso, a melhor abordagem será executar o mesmo "bitness" de ferramentas no host que o destino está executando. Por exemplo, se o destino estiver executando o Windows de 32 bits, execute uma versão de 32 do depurador no host. Para obter mais informações, consulte Escolher as ferramentas de depuração de 32 ou 64 bits.

  3. No computador host, copie os dois arquivos para um compartilhamento de rede ou pen drive, de maneira que eles estejam disponíveis no computador de destino.

  4. No computador de destino, crie um diretório C:\KDNET e copie os arquivo kdnet.exe e VerifiedNICList.xml para esse diretório.

    Importante

    Antes de usar o kdnet.exe para alterar as informações de inicialização, talvez você precise suspender temporariamente os recursos de segurança do Windows, como o BitLocker e a Inicialização Segura no PC 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.

  5. No computador de destino, abra um prompt de comando como administrador. Digite este comando para verificar se o computador de destino tem um adaptador de rede compatível:

    C:\KDNET>kdnet.exe
    Network debugging is supported on the following NICs:
    busparams=1.0.0, Broadcom NetXtreme Gigabit Ethernet, Plugged in.  
    This Microsoft hypervisor supports using KDNET in guest VMs.
    
  6. Quando a saída de kdnet.exe indicar que o adaptador de rede no destino é compatível, você poderá continuar.

  7. Digite o comando a seguir para definir o endereço IP do sistema host e gerar uma chave de conexão exclusiva. Use o endereço IP ou o nome do sistema host. Escolha um endereço de porta exclusivo para cada par de destino/host com o qual você trabalha, dentro do intervalo recomendado de 50000 a 50039.

    C:\KDNET>kdnet.exe <HostComputerIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
    Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    
  8. Copie a chave retornada para um arquivo .txt do Bloco de Notas.

Conectar o WinDbg ao destino para depuração do kernel

No computador host, abra o WinDbg. No menu Arquivo, selecione Depuração de kernel. Na caixa de diálogo Depuração do Kernel, abra Rede. Cole o número da porta e a chave salva no arquivo .txt do Bloco de Notas anteriormente. Selecione OK.

Você também pode iniciar uma sessão do WinDbg abrindo uma janela do prompt de comando e digitando o comando a seguir. <YourPort> é a porta que você selecionou anteriormente e <YourKey> é a chave que foi retornada por kdnet.exe antes. Cole a chave que você salvou no arquivo .txt do Bloco de Notas anteriormente.

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

O parâmetro -d opcional mostrado no exemplo permite a invasão antecipada. Para obter mais informações, consulte Opções da linha de comando do WinDbg.

Se você for solicitado a permitir que o WinDbg acesse a porta por meio do firewall, permita que o WinDbg acesse a porta para os três tipos de rede diferentes.

Captura de tela do Alerta de Segurança do Windows com seleções para permitir o acesso a todos os três tipos de rede.

Neste ponto, o depurador aguarda a reconexão do destino. O texto é exibido na janela de comando do depurador. Esse texto será semelhante ao seguinte:

Microsoft (R) Windows Debugger Version 1.0.1908.30002 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Using NET for debugging
Opened WinSock 2.0
Waiting to reconnect...

Reiniciar o PC de destino

Quando o depurador estiver no estágio "Aguardando reconexão..." , reinicie o computador de destino. Uma maneira de reiniciar o PC é usar esse comando no prompt de comando de um administrador.

shutdown -r -t 0 

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

Dicas de solução de problemas

Os aplicativos de depuração devem ser permitidos por meio de um firewall

No lado do host, no qual o depurador está em execução, todos os tipos de rede devem estar habilitados para permitir que o depurador se comunique com o destino por meio do firewall.

Use o Painel de Controle para permitir o acesso pelo firewall.

  1. Abra o Painel de Controle > Sistema e Segurança e selecione Permitir um aplicativo pelo Firewall do Windows.

    • (WinDbg) Na lista de aplicativos, localize Processo do mecanismo do WinDbg (TCP) (todos).

    • (WinDbg Clássico) Na lista de aplicativos, localize Windows GUI Symbolic Debugger e Windows Kernel Debugger.

  2. Use as caixas de seleção para permitir esses dois aplicativos em todos os três tipos de rede diferentes.

  3. Role para baixo e selecione OK para salvar as alterações do firewall. Reinicie o depurador.

    Captura de tela da configuração do firewall do Painel de Controle exibindo os aplicativos Depurador Simbólico da Interface Gráfica do Usuário do Windows e Depurador de Kernel do Windows com todos os três tipos de rede habilitados.

Usar ping para testar a conectividade

Se o depurador expirar e não se conectar, use o comando ping no PC de destino para verificar a conectividade.

   C:\>Ping <HostComputerIPAddress>

Escolha de uma porta para depuração de rede

Se o depurador atingir o tempo limite e não se conectar, pode ser porque o número da porta padrão de 50000 já está em uso ou está bloqueado.

Você pode escolher qualquer número de porta entre 49152 e 65535. O intervalo recomendado é entre 50000 e 50039. A porta escolhida é aberta para acesso exclusivo pelo depurador em execução no computador host.

O intervalo de números de porta que pode ser usado para depuração de rede pode ser limitado pela diretiva de rede da empresa. Para determinar se a política da empresa limita o intervalo de portas que podem ser usadas para depuração de rede, consulte os administradores de rede.

Adaptadores de rede aceitos

Se "A depuração de rede não é compatível em nenhuma das NICs neste computador" for exibida quando você executar kdnet.exe, o adaptador de rede não será compatível.

O computador host pode usar qualquer adaptador de rede, mas o computador de destino deve usar um adaptador de rede aceito pelas Ferramentas de depuração para Windows. Para obter uma lista de adaptadores de rede suportados, consulte NICs Ethernet suportadas para depuração de kernel de rede no Windows 10 e NICs Ethernet suportadas para depuração de kernel de rede no Windows 8.1.

Habilitar outros tipos de depuração

A partir da atualização de outubro de 2020 do Windows 10 (20H2), as seguintes opções são compatíveis para habilitar quatro tipos de depuração:

Qualquer combinação de tipos de depuração pode ser especificada.

Se nenhum tipo de depuração for especificado, a depuração do kernel será habilitada.

Se a depuração do hipervisor e do kernel estiverem habilitadas, a porta do hipervisor será definida como <YourDebugPort> + 1.

Exemplo de uso

Use a opção - bkw para habilitar a depuração de bootmgr, kernel e winload.

C:\>kdnet.exe <HostComputerIPAddress> <YourDebugPort> -bkw

Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p

Resumo das opções do tipo de depuração

Opção KNDET Descrição Comando set equivalente
b habilita a depuração de bootmgr bcdedit /bootdebug {bootmgr} on
h habilita a depuração de hipervisor bcdedit /set hypervisordebug on
k habilita a depuração do kernel bcdedit /debug on
w habilita a depuração de winload bcdedit /bootdebug on

Especificar parâmetros de barramento

Se o kdnet não conseguir determinar automaticamente os parâmetros de barramento para o transporte, especifique-os na linha de comando com a opção /busparams usando essa sintaxe.

kdnet.exe /busparams [b.d.f] [host] [port] [-[b][h][k][w]]

b.d.f especifica os parâmetros de barramento do dispositivo a ser configurado.

Use o Gerenciador de Dispositivos no computador de destino para determinar os números de barramento, dispositivo e função PCI para o adaptador que você deseja usar na depuração. Para parâmetros de barramento, insira b.d.f em que b, d e f são o número de barramento, o número do dispositivo e o número da função do adaptador. Esses valores são exibidos no Gerenciador de Dispositivos em Local na guia Geral.

Por exemplo:

C:\>kdnet.exe /busparams 0.29.7 <HostComputerIPAddress> <YourDebugPort> -bkw

Confira também