Partilhar via


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

Este artigo mostra como configurar a depuração do kernel de rede KDNET manualmente usando as Ferramentas de Depuração para Windows. Você configura os computadores host e de destino para habilitar a depuração de rede.

Importante

A configuração manual de depuração de rede é complexa e sujeita a erros. Para a maioria dos cenários, opte pela configuração automática:Configuração automática da depuração do kernel de rede KDNET. O utilitário KDNET é altamente recomendado.

O que você aprende:

  • Como configurar computadores host e de destino para depuração de rede
  • Como estabelecer e solucionar problemas de depuração de conexões
  • Quando usar IPv6 vs IPv4 para depuração

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

A depuração numa rede tem as seguintes vantagens em comparação com a depuração noutros tipos de conectividade.

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

Adaptadores de rede suportados

Computador anfitrião: Qualquer adaptador de rede funciona.

Computador de destino: Deve usar um adaptador de rede suportado. Verifique a sua versão para Windows:

Instalar 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 de 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 digite o seguinte comando:

    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, onde YourIPAddress é o endereço IP do computador host:

    ping -4 <YourIPAddress>
    

Escolha uma porta para depuração de rede

Intervalo de portas recomendado: 50000-50039

Você pode usar qualquer porta de 49152-65535, mas o intervalo recomendado fornece a melhor compatibilidade. O depurador usa essa porta exclusivamente, portanto, certifique-se de que nenhum outro aplicativo a use.

Considerações importantes

  • Os firewalls corporativos podem restringir os intervalos de portas. Consulte o administrador da rede.
  • Cada computador de destino precisa de uma porta exclusiva (por exemplo: 50000, 50001, 50002).
  • Computadores host diferentes podem reutilizar o mesmo intervalo de portas.

Observação

A política de rede da sua empresa pode limitar as portas disponíveis. Consulte os administradores de rede se tiver problemas de ligação.

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 pode 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 suportado. Para mais informações, consulte:

  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 estiver concluído e gerencie adequadamente o PC de teste quando os recursos de segurança estiverem desativados.

  1. Em um prompt de comando elevado, digite os seguintes comandos. Substitua w.x.y.z pelo endereço IP do computador host e n pelo número da porta escolhida:

    bcdedit /debug on
    bcdedit /dbgsettings net hostip:w.x.y.z port:n
    

    Por exemplo:

    bcdedit /debug on
    bcdedit /dbgsettings net hostip:192.168.1.100 port:50000
    
  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 quando inicia uma sessão de depuração no computador anfitrião.

  3. Utilize o Gestor de Dispositivos para determinar os números do barramento PCI, do dispositivo e da função do adaptador que pretende usar para debugging. Esses valores são exibidos no Gestor de Dispositivos em Localização na guia Geral. Em seguida, num prompt de comando elevado, introduza o seguinte comando, onde b, de 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 é reinicializado após um depurador do kernel ser anexado.

Observação

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

Atenção

Se o computador de destino estiver em uma estação de ancoragem e você habilitar a depuração de rede para um adaptador de rede que faz parte da estação de ancoragem, não remova o computador da estação de ancoragem. Se você precisar remover o computador de destino da estação de ancoragem, 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

Antes de começar: Verifique se o adaptador de rede do computador host está conectado a um hub ou switch de rede.

Opção 1: Usar WinDbg (GUI)

  1. Abra o WinDbg no computador host.
  2. Selecione File>Kernel Debug.
  3. Abra a guia Rede .
  4. Introduza o número da porta e a chave.
  5. Selecione OK.

Opção 2: Usar WinDbg (linha de comando)

Você também pode iniciar uma sessão com o WinDbg abrindo um prompt de comando e digitando o seguinte comando, onde n é o número da porta e MyKey é a chave que o BCDEdit gerou automaticamente 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 através do firewall, permita que o WinDbg acesse a porta para todos os três dos diferentes tipos de rede.

Usar KD

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

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

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

Reinicie o PC de destino

Quando o depurador se conectar e aguardar, 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 é reiniciado, o depurador no sistema operativo anfitrião se conecta.

Depois de se conectar ao destino no host, selecione interromper no depurador e pode começar a depurar.

Permitir que o depurador passe pelo firewall

Quando você tenta estabelecer uma conexão de depuração de rede pela primeira vez, você pode ser solicitado a permitir o acesso ao aplicativo de depuração (WinDbg ou KD) através do firewall. As versões de cliente do Windows exibem o prompt, mas as versões de servidor do Windows não exibem o prompt. Responda ao prompt marcando as caixas para todos os três tipos de rede: domínio, privado e público.

Se não receber o aviso ou se não tiver marcado as caixas quando o aviso estava disponível, use o Painel de Controlo para permitir o acesso através do firewall no PC host onde o depurador está a executar. Abra Painel de Controle > Sistema e Segurança e selecione Permitir um aplicativo através do Firewall do Windows.

  • (WinDbg) Na lista de aplicações, localize processo do motor 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 o aplicativo de depuração (WinDbg ou KD).

Chave de encriptação

Para manter o computador de destino seguro, os pacotes que viajam entre o host e os computadores de destino devem ser criptografados. Use uma chave de criptografia gerada automaticamente (fornecida pelo BCDEdit ao configurar o computador de destino). Uma chave de criptografia gerada automaticamente é mais segura e fornece um valor exclusivo que você usa para estabelecer a 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 até z e os dígitos de 0 a 9. Não são permitidos caracteres especiais.

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

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

O computador de destino precisa ser reinicializado sempre que você alterar as configurações dbgsettings.

Dicas de solução de problemas

Permitir a aplicação de depuração através de firewalls

Quando você tenta estabelecer uma conexão de depuração de rede pela primeira vez, você pode ser solicitado a permitir o acesso ao aplicativo de depuração (WinDbg ou KD) através do firewall. As versões de cliente do Windows exibem o prompt, mas as versões de servidor do Windows não exibem o prompt. Responda ao prompt marcando as caixas para todos os três tipos de rede: domínio, privado e público.

Se você não receber o prompt ou se não marcou as caixas quando o prompt estava disponível, você deve usar o Painel de Controle para permitir o acesso através do firewall. Abra Painel de Controle > Sistema e Segurança e selecione Permitir um aplicativo através do Firewall do Windows.

  • (WinDbg) Na lista de aplicações, localize processo do motor 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 diretiva de rede

A política de rede da sua empresa pode limitar o intervalo de números de porta que o utilizador pode usar para a resolução de problemas de rede. Para saber se a política da sua empresa limita o intervalo de portas para depuração de rede, consulte o administrador da rede. No computador de destino, abra um prompt de comando como administrador e digite o comando bcdedit /dbgsettings. O resultado é semelhante ao seguinte exemplo:

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, em seguida, reinicie o computador de destino.

Usar ping para testar a conectividade

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

C:\>Ping <HostComputerIPAddress>

Observação

Esse método pode não funcionar se o computador host não estiver configurado para ser detetável na rede, pois o firewall pode bloquear solicitações de ping. Se o firewall bloquear solicitações de ping, você não obterá nenhuma resposta ao executar ping no host.

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

KDNET no computador de destino tenta usar o protocolo DHCP (Dynamic Host Configuration Protocol) para obter um endereço IP roteável para o adaptador de rede usado para depuração. Se o KDNET obtiver um endereço atribuído pelo DHCP, então os computadores anfitriões em qualquer lugar da rede poderão depurar o computador de destino. Se o KDNET não conseguir obter um endereço atribuído pelo 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 funciona 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 estiver a configurar o KDNET numa máquina física com uma NIC baseada em PCI ou PCIe, deve sempre especificar os busparams para a NIC que deseja utilizar 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 tome nota do número do barramento, do número do dispositivo e do número da função que aparecem em Localização no separador Geral. Numa consola de comandos com privilégios elevados, introduza o seguinte comando, onde b, d e f são os números de barramento, dispositivo e função em formato decimal.

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

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

shutdown -r -t 0

Excluir manualmente entradas BCDEdit

Normalmente, não é necessário excluir manualmente as entradas do BCDEdit. No entanto, você pode usar este procedimento para solucionar problemas de situações incomuns.

Você não precisa excluir manualmente as entradas quando usa o utilitário kdnet. Para obter mais informações, consulte Configurando a depuração do kernel de rede KDNET automaticamente.

Ao usar bcdedit –deletevalue, você deve 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 excluis a entrada de porta, o KDNET usa a porta padrão do depurador registada na ICANN de 5364.

Configurar Hyper-V

Se você quiser instalar a função Hyper-V no computador de destino, consulte Configurando 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 Configurando a depuração de rede de uma máquina virtual - KDNET.

Habilite 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 em VMs pare de funcionar:

  • Você habilita Hyper-V no PC, cria um comutador de rede externo que aponta para uma NIC física na máquina e configura as VMs para usar esse comutador externo para sua rede.

  • Você ativa o KDNET no sistema operacional host Hyper-V usando a mesma NIC física para a qual o comutador de rede externo aponta. Você reinicia o host.

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

Esta paralisação é intencional. A KDNET assume o controle exclusivo sobre a NIC que está configurada para usar. O sistema operacional não carrega a miniporta NDIS nativa para essa NIC. O switch de rede externo não pode mais se comunicar com o driver de miniporta NDIS nativo e para de funcionar. Para contornar essa situação, conclua as seguintes etapas:

  1. Abra o Virtual Switch Manager a partir do Hyper-V Manager e selecione o seu Comutador Virtual existente. Altere a NIC da rede externa para o Microsoft Kernel Debug Network Adapter selecionando-a no menu suspenso e, em seguida, selecionando OK no diálogo do Virtual Switch Manager.

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

Ao desativar a depuração KDNET, siga o mesmo procedimento para redirecionar o switch externo de volta para a miniporta NDIS nativa do NIC. Caso contrário, perde-se a conectividade da VM quando a máquina é reiniciada após a desativação da depuração.

IPv6

Windows versão 1809 adiciona suporte para IPv6.

Para usar o IPv6 com o depurador, conclua as seguintes etapas:

  1. Execute o comando ping no seu <debughostname> e anote o endereço IPv6 que é relatado nas linhas de resposta 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. A hostipv6=s:t:u:v:w:x:y:z cadeia de caracteres não pode conter espaços. <YourPort> é o número da porta de rede a ser usado para esta 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 este comando para confirmar se o dbgsettings está definido 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 para se conectar, reinicie o computador de destino.

  7. O depurador se conecta ao depurador host no início da inicialização. Você pode ver que o KDNET usa 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 definição bcd do depurador que permite especificar o hostip tem um elemento hostipv6 correspondente. Existem três pares.
IPv4 IPv6 Utilização
endereço IP do host hostipv6 Para inicialização e depuração do kernel
targethostip (endereço IP do host alvo) targethostipv6 Específico para depuração do kernel
HypervisorHostIP hipervisorhostipv6 Para depuração Hyper-V
  • Se definir o endereço de estilo hostipv6 para qualquer um desses tipos de depuração, obterá IPv6.

  • Se definir o estilo de endereço hostip para quaisquer destes tipos de depuração, obterá IPv4.

  • O destino só suporta IPv4 ou IPv6, não ambos ao mesmo tempo. A versão do protocolo IP usada é controlada pela máquina de destino dbgsettings. Se você definir hostip, o destino usará IPv4. Se você definir hostipv6, o destino usará IPv6.

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

  • Se quiser forçar o uso de IPv6 no depurador no host, mas quiser que o depurador espere por uma conexão do alvo, pode adicionar target=:: à linha de comando do depurador. :: é um endereço IPv6 de 0.

  • Se pretendes forçar a depuração de IPv4 no depurador no host, mas queres que o depurador aguarde uma conexão do alvo, então podes 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 conectar-se a 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 assume que é um endereço IPv6 e força o uso do IPv6 para essa conexão. Se o endereço IP contiver algum . caracteres, o depurador assume que é um endereço IPv4 e força o uso do 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.