Compartilhar via


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

As Ferramentas de depuração para Windows oferecem suporte à depuração de kernel em uma rede. Este artigo descreve como configurar a depuração de rede manualmente.

Importante

Configurar uma depuração de rede manualmente é um processo complexo e propenso a erros. Para configurar a depuração de rede automaticamente, consulte Como configurar a depuração automática do kernel de rede KDNET. O uso do utilitário KDNET é altamente recomendado para todos os usuários do depurador.

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 ter o Windows 7 ou posterior, e o computador de destino, o Windows 8 ou posterior.

A depuração em uma rede tem as seguintes vantagens em comparação com a depuração em relação a outros tipos de conectividade.

  • Os computadores host e de destino podem estar em qualquer lugar da rede local.
  • É fácil depurar muitos computadores de destino a partir de um computador host.
  • Considerando dois computadores, é provável que ambos tenham adaptadores Ethernet. É menos provável que ambos tenham portas seriais ou portas 1394.
  • A depuração de rede é mais rápida do que a depuração de porta serial.

Adaptadores de rede aceitos

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.

Instalar as Ferramentas de depuração para Windows

Confirme se as Ferramentas de depuração para 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.

Determinar o endereço IP do computador host.

Use um dos procedimentos a seguir para determinar o endereço IP do computador host.

  1. No computador host, abra um prompt de comando e insira o comando a seguir:

    ipconfig
    

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

  2. No computador de destino, abra um prompt de comando e digite o seguinte comando, em que YourIPAddress é o endereço IP do computador host:

    ping -4 <YourIPAddress>
    

Escolher uma porta para depuração de rede

Escolha um número de porta para depuração nos computadores host e de destino. Você pode escolher qualquer número entre 49152 e 65535. O intervalo recomendado é 50000 a 50039. A porta escolhida é aberta para acesso exclusivo pelo depurador em execução no computador host. Tenha o cuidado de escolher um número de porta que não seja usado por nenhum outro aplicativo executado no computador host.

Observação

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. Não há como saber quais são as limitações do computador host. 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.

Se você conectar vários computadores de destino a um único computador host, cada conexão deverá ter um número de porta exclusivo. Por exemplo, se você conectar 100 computadores de destino a um único computador host, poderá atribuir a porta 50000 à primeira conexão, a porta 50001 à segunda conexão e assim por diante.

Observação

 Um computador host diferente poderia usar o mesmo intervalo de portas (50000 a 50099) para se conectar a outros 100 computadores de destino.

Configurar o computador de destino

  1. Verifique se o computador de destino tem um adaptador de rede compatível. Para saber mais, veja:

  2. Conecte o adaptador suportado a um hub ou switch de rede usando um cabo de rede apropriado.

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. Reative esses recursos de segurança quando o teste for concluído e gerencie corretamente o computador de teste quando os recursos de segurança estiverem desabilitados.

  1. Em um prompt de comando elevado, digite os seguintes comandos, em que w.x.y.z é o endereço IP do computador host e n é um número de porta de sua escolha:

    bcdedit /debug on
    
    bcdedit /dbgsettings net hostip:w.x.y.z port:n
    
  2. O BCDEdit exibe uma chave gerada automaticamente. Copie a chave e armazene-a em um dispositivo de armazenamento removível, como uma unidade flash USB. Você precisa da chave ao iniciar uma sessão de depuração no computador host.

  3. Use o Gerenciador de Dispositivos para determinar os números de barramento, dispositivo e função PCI para o adaptador que você deseja usar para depuração. Esses valores são exibidos no Gerenciador de Dispositivos em Local na guia Geral. Em seguida, em um prompt de comando elevado, digite o seguinte comando a seguir, em que b, d e f são o número do barramento, o número do dispositivo e o número da função do adaptador:

    bcdedit /set "{dbgsettings}" busparams b.d.f
    
  4. O PC de destino será reinicializado depois que um depurador de kernel for conectado.

Observação

Se você pretende instalar a função Hyper-V no computador de destino, consulte Como configurar a depuração de rede de um host de máquina virtual.

Cuidado Se o computador de destino estiver em uma dock station, e você tiver a depuração de rede habilitada para um adaptador de rede que faz parte da dock station, não remova o computador da dock station. Se você precisar remover o computador de destino da dock station, desative a depuração do kernel primeiro. Para desativar a depuração do kernel no computador de destino, abra um prompt de comando como administrador e digite o comando bcdedit /debug off. Reinicie o computador de destino.

Iniciar a sessão de depuração

Confirme se o adaptador de rede do computador host está conectado a um hub ou comutador de rede usando um cabo de rede apropriado.

No computador host, abra o WinDbg. No menu Arquivo, selecione Depuração de kernel. Na caixa de diálogo Depuração do kernel, abra a guia Rede. Insira o número da porta e a chave. Selecione OK.

Você também pode iniciar uma sessão com o WinDbg abrindo um prompt de comando e inserindo o comando a seguir, em que n é o número da porta e MyKey é a chave que foi gerada automaticamente pelo BCDEdit quando você configurou o computador de destino:

windbg -k net:port=<n>,key=<MyKey>

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.

Usar o KD

No computador host, abra um prompt de comando. Digite o seguinte comando, em que n é o número da porta e MyKey é a chave que foi gerada automaticamente pelo BCDEdit quando você configurou o computador de destino:

kd -k net:port=<n>,key=<MyKey>

Se você precisar decidir sobre 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.

Reiniciar o PC de destino

Quando o depurador estiver conectado e aguardando conexão, reinicie o computador de destino. Uma maneira de reiniciar o PC é usar este comando no prompt de comando de um administrador:

shutdown -r -t 0

Quando o destino for reiniciado, o depurador no sistema operacional host deverá se conectar.

Depois de se conectar ao destino no host, pressione a tecla de espaço no depurador para iniciar a depuração.

Permitir que o depurador passe pelo firewall

Quando você tenta estabelecer uma conexão de depuração de rede pela primeira vez, talvez precise permitir o acesso do aplicativo de depuração (WinDbg ou KD) por meio do firewall. As versões de cliente do Windows exibem o prompt, mas as versões de servidor do Windows, não. Você deve responder ao prompt marcando as caixas para os três tipos de rede: domínio, privado e público.

Se você não receber o prompt ou se não tiver marcado as caixas quando o prompt estiver disponível, deverá usar o Painel de Controle para permitir o acesso por meio do firewall no computador host em que o depurador está sendo executado. 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.

Use as caixas de seleção para permitir que esses aplicativos passem pelo firewall. Reinicie seu aplicativo de depuração (WinDbg ou KD).

Chave de criptografia

Para manter o computador de destino seguro, os pacotes transmitidos entre o host e os computadores de destino devem ser criptografados. Você deve usar uma chave de criptografia gerada automaticamente (fornecida pelo BCDEdit ao configurar o computador de destino). O uso de uma chave de criptografia gerada automaticamente é recomendado, pois é mais seguro e fornece um valor exclusivo que é usado no estabelecimento da conexão com um destino específico.

A depuração de rede usa uma chave de 256 bits especificada como quatro valores de 64 bits, na base 36, separados por pontos. Cada valor de 64 bits é especificado usando até 13 caracteres. Os caracteres válidos são as letras de a e z e os dígitos de 0 a 9. Caracteres especiais não são permitidos.

Para especificar sua própria chave, abra um prompt de comando elevado no computador de destino. Digite o seguinte comando, em que w.x.y.z é o endereço IP do computador host, n é o número da porta e Key é a chave:

bcdedit /dbgsettings net hostip:w.x.y.z port:n key:Key

O computador de destino precisará ser reinicializado sempre que as dbgsettings forem alteradas.

Dicas de solução de problemas

O aplicativo de depuração deve receber permissão por meio de firewalls

Quando você tenta estabelecer uma conexão de depuração de rede pela primeira vez, talvez precise permitir o acesso do aplicativo de depuração (WinDbg ou KD) por meio do firewall. As versões de cliente do Windows exibem o prompt, mas as versões de servidor do Windows, não. Você deve responder ao prompt marcando as caixas para os três tipos de rede: domínio, privado e público.

Se você não receber o prompt ou se não tiver marcado as caixas quando o prompt estiver disponível, deverá usar o Painel de Controle para permitir o acesso pelo firewall. 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.

Use as caixas de seleção para permitir que esses aplicativos passem pelo firewall. Role para baixo e selecione OK para salvar as alterações do firewall. Reinicie o depurador.

O número da porta deve estar no intervalo permitido pela política de rede

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 o administrador de rede. No computador de destino, abra um prompt de comando como administrador e digite o comando bcdedit /dbgsettings. A saída será semelhante ao seguinte:

C:\> bcdedit /dbgsettings
key                     XXXXXX.XXXXX.XXXXX.XXXXX
debugtype               NET
hostip                  169.168.1.1
port                    50085
dhcp                    Yes
The operation completed successfully.

Na saída anterior, o valor da porta é 50085. Se o valor da porta estiver fora do intervalo permitido pelo administrador da rede, digite o seguinte comando. O valor w.x.y.z é o endereço IP do computador host e YourDebugPort é um número de porta no intervalo permitido.

bcdedit /dbgsettings net hostip:w.x.y.z port:YourDebugPort

Depois de alterar as configurações do depurador da máquina de destino, execute novamente o depurador na máquina host com a nova configuração de porta e reinicie o computador de destino.

Usar ping para testar a conectividade

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

C:\>Ping <HostComputerIPAddress>

Observação

Isso poderá não funcionar se o computador host não estiver configurado para ser detectável na rede, pois o firewall pode bloquear solicitações de ping. Se o firewall bloquear as solicitações de ping, você não obterá respostas quando executar ping no host.

Como o depurador obtém um endereço IP para o computador de destino

O KDNET no computador de destino tenta usar o Protocolo DHCP para obter um endereço IP roteável para o adaptador de rede que está sendo usado para depuração. Se o KDNET obtiver um endereço atribuído por DHCP, o computador de destino poderá ser depurado por computadores host localizados em qualquer lugar da rede. Se o KDNET não conseguir obter um endereço atribuído por DHCP, ele usará o endereçamento IP privado automático (APIPA) para obter um endereço IP de link local. Os endereços IP de link local não são roteáveis, portanto, um host e um destino não podem usar um endereço IP de link local para se comunicar por meio de um roteador. Nesse caso, a depuração de rede funcionará se você conectar o host e os computadores de destino ao mesmo hub ou switch de rede.

Sempre especifique busparams ao configurar o KDNET em uma máquina física com uma NIC baseada em PCI

Se você estiver configurando o KDNET em uma máquina física com uma placa de rede baseada em PCI ou PCIe, deverá sempre especificar os busparams para a NIC que deseja usar para o KDNET. Para especificar os parâmetros de barramento, abra o Gerenciador de Dispositivos e localize o adaptador de rede que você deseja usar para depuração. Abra a página de propriedades do adaptador de rede e anote o número do barramento, o número do dispositivo e o número da função exibidos em Local na guia Geral. Em um prompt de comando elevado, digite o seguinte comando, em que b, d e f são os números de barramento, dispositivo e função no formato decimal:

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

Quando o depurador estiver em execução na máquina host e aguardando conexão, reinicie o computador de destino usando o seguinte comando:

shutdown -r -t 0

Excluir manualmente as entradas BCDEdit

A exclusão manual normalmente não é necessária, mas é fornecida aqui como um procedimento de solução de problemas para situações incomuns.

A exclusão manual de entradas não é necessária ao usar o utilitário kdnet. Para obter mais informações, consulte Como configurar a depuração automática do kernel de rede KDNET.

Ao usar bcdedit –deletevalue, você deverá fornecer um nome de elemento bcd válido. Para obter mais informações, consulte BCDEdit/deletevalue.

Para excluir manualmente as entradas bcdedit, conclua as seguintes etapas:

  1. No computador de destino, abra um prompt de comando como administrador.

  2. Como exemplo, digite o seguinte comando para excluir a entrada de depuração BCDEdit para o endereço IP do host:

    bcdedit -deletevalue {dbgsettings} hostip
    

Ao excluir o hostip, você precisa especificar target= na linha de comando do depurador.

  1. Como outro exemplo, exclua a entrada de porta usando o seguinte comando:

    bcdedit -deletevalue {dbgsettings} port
    

Quando você exclui a entrada de porta, o KDNET usa a porta padrão do depurador registrada na ICANN de 5364.

Configurar o Hyper-V

Se você pretende instalar a função Hyper-V no computador de destino, consulte Como configurar a depuração de rede de um host de máquina virtual.

Para obter informações sobre como depurar uma máquina virtual (VM) Hyper-V, consulte Como configurar a depuração de rede de uma máquina virtual - KDNET.

Ativar o KDNET em um host Hyper-V que esteja executando VMs com conectividade de rede externa

Às vezes, ocorre uma situação que faz com que a rede nas VMs pare de funcionar:

  • O Hyper-V foi habilitado no PC, um comutador de rede externo foi criado e está apontado para uma NIC física na máquina, e as VMs foram configuradas para usar esse comutador externo para sua rede.

  • O KDNET é então habilitado no sistema operacional host Hyper-V usando a mesma NIC física apontada pelo comutador de rede externo. O host é reinicializado.

  • Todas as VMs que usavam o comutador externo configurado anteriormente perdem sua conectividade de rede após a reinicialização.

Essa interrupção ocorre por padrão e acontecerá porque o KDNET assume o controle exclusivo sobre a NIC que está configurado para usar. A miniporta NDIS nativa para essa NIC não é carregada pelo sistema operacional. O comutador de rede externo não pode mais se comunicar com o driver de miniporta NDIS nativo e deixa de funcionar. Para contornar essa situação, faça o seguinte:

  1. Abra o Gerenciador de Comutador Virtual no Gerenciador do Hyper-V e selecione o Comutador Virtual existente. Altere a NIC de rede externa para o Adaptador de rede de depuração Kernel da Microsoft selecionando-a no menu suspenso e, em seguida, selecionando OK na caixa de diálogo Gerenciador de Comutador Virtual.

  2. Depois de atualizar a NIC do Comutador Virtual, desligue e reinicie as VMs.

Quando a depuração do KDNET está desativada, o mesmo procedimento precisa ser seguido para redirecionar o switch externo de volta para a miniporta NDIS nativa da NIC. Caso contrário, a conectividade da VM será perdida quando a máquina for reinicializada após a depuração ser desabilitada.

IPv6

O suporte a IPv6 foi adicionado no Windows versão 1809.

Para usar o IPv6 com o depurador, siga estas etapas:

  1. Execute ping no <debughostname> e anote o endereço IPv6 relatado na resposta das linhas de saída. Use este endereço IPv6 no lugar de x:y:z:p:d:q:r:n.

  2. Use BCDEdit para excluir quaisquer valores de endereço IP existentes em dbgsettings.

    bcdedit -deletevalue {dbgsettings} hostip
    
  3. Defina o endereço IPv6 do host. Não deve haver espaços na cadeia de caracteres hostipv6=s:t:u:v:w:x:y:z. <YourPort> é o número da porta de rede a ser usado para essa máquina de destino. <YourKey> é a chave de segurança de quatro partes. <b.d.f> são os números de localização da função do dispositivo de barramento para a NIC que você deseja usar para o KDNET.

    bcdedit /dbgsettings net hostipv6:s:t:u:v:w:x:y:z port:<YourPort> key:<YourKey> busparams:<b.d.f>
    
  4. Digite o comando para confirmar se as dbgsettings estão definidas corretamente.

    C:\> bcdedit /dbgsettings
    busparams               0.25.0
    key                     2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    debugtype               NET
    hostipv6                  2001:db8:0:0:ff00:0:42:8329
    port                    50010
    dhcp                    Yes
    The operation completed successfully.
    
  5. Na máquina host, use o seguinte comando para iniciar o depurador:

    Windbg -k net:port=<yournetworkportnumber>,key=<key_output_from_kdnet>,target=::<YourIPv6Address> 
    
  6. Quando o depurador estiver em execução na máquina host e aguardando conexão, reinicie o computador de destino.

  7. O depurador deve se conectar ao depurador do host no início da inicialização. Você pode ver que o KDNET está usando uma conexão IPv6 porque os endereços IP relatados na mensagem conectada são endereços IPv6 em vez de endereços IPv4.

Observações

  • Cada configuração bcd do depurador que permite especificar hostip tem um elemento hostipv6 correspondente. Existem três.

    IPv4 IPv6 Uso
    hostip hostipv6 Para inicialização e depuração de kernel
    targethostip targethostipv6 Específico para depuração de kernel
    hypervisorhostip hypervisorhostipv6 Para depuração do hyper-v
  • Caso você defina o endereço de estilo hostipv6 para qualquer um desses tipos de depuração, isso significa que você deseja e obterá o IPv6.

  • Caso você defina o endereço de estilo hostip para qualquer um desses tipos de depuração, isso significa que você deseja e obterá o IPv4.

  • O destino será apenas IPv4 ou IPv6, não os dois ao mesmo tempo. A versão do protocolo IP usada é controlada pela máquina de destino dbgsettings. Se hostip estiver definido, o destino usará IPv4. Se hostipv6 estiver definido, o destino usará IPv6.

  • O depurador de host normalmente seleciona automaticamente o uso de IPv4 ou IPv6. Por padrão, o depurador escuta em um soquete IPv4 e em um soquete IPv6 e se conecta automaticamente em qualquer um deles à máquina de destino.

  • Se você quiser forçar o uso de IPv6 no depurador no host, mas quiser que o depurador escute uma conexão do destino, então você poderá adicionar target=:: à linha de comando do depurador. :: é um endereço IPv6 de 0.

  • Se você quiser forçar a depuração de IPv4 no depurador no host, mas quiser que o depurador escute uma conexão do destino, então você poderá adicionar target=0.0.0.0 à linha de comando do depurador. 0.0.0.0 é um endereço IPv4 de 0.

  • Se você especificar target= na linha de comando do depurador e usar um nome de máquina, o depurador converterá esse nome de máquina em um endereço IPv4 e um endereço IPv6. Em seguida, o depurador tenta se conectar em ambos.

  • Quando você especifica target= na linha de comando do depurador e usa um endereço IP, se o endereço IP contiver caracteres :, o depurador assumirá que é um endereço IPv6 e forçará o uso de IPv6 para essa conexão. Se o endereço IP contiver caracteres ., o depurador assumirá que é um endereço IPv4 e forçará o uso de IPv4 para essa conexão.

  • Se você configurar o IPv6 no destino e forçar o uso do IPv4 na linha de comando do depurador, não obterá uma conexão.

  • Se você configurar o IPv4 no destino e forçar o uso do IPv6 na linha de comando do depurador, também não obterá uma conexão.

Confira também