Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como configurar a depuração manual de kernel de rede KDNET usando as Ferramentas de Depuração para Windows. Você configura 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, use a configuração automática em vez disso:Configurar a depuração de kernel de rede KDNET automaticamente. 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 nas conexões de depuração
- 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 em uma rede tem as seguintes vantagens em comparação com a depuração em relação a outros tipos de conectividade.
- O host e os computadores de destino podem estar em qualquer lugar na 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 serial ou 1394 portas.
- A depuração de rede é mais rápida do que a depuração de porta serial.
Adaptadores de rede com suporte
Computador host: Qualquer adaptador de rede funciona.
Computador de destino: Deve usar um adaptador de rede com suporte. Verifique sua versão do Windows:
- Adaptadores com suporte para Windows 11
- Adaptadores com suporte para Windows 10
- Adaptadores compatíveis com o 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.
No computador host, abra um prompt de comando e insira o seguinte comando:
ipconfigAnote o endereço IPv4 do adaptador de rede que você pretende usar para depuração.
No computador de destino, abra um prompt de comando e insira o seguinte comando, em que YourIPAddress é o endereço IP do computador host:
ping -4 <YourIPAddress>
Escolher uma porta para depuração de rede
Intervalo de portas recomendado: 50000-50039
Você pode usar qualquer porta de 49152 a 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
- Firewalls corporativos podem restringir intervalos de portas. Verifique com o administrador de 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.
Nota
A política de rede da sua empresa pode limitar as portas disponíveis. Verifique com os administradores de rede se você encontra problemas de conexã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, porta 50001 à segunda conexão e assim por diante.
Nota
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
Verifique se o computador de destino tem um adaptador de rede com suporte. Para obter mais informações, consulte:
Conecte o adaptador compatível a um hub de rede ou switch usando um cabo de rede apropriado.
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 BitLocker e Inicialização Segura, no computador de teste. Habilite novamente esses recursos de segurança quando o teste for concluído e gerencie adequadamente o computador de teste quando os recursos de segurança forem desabilitados.
Em um prompt de comando com privilégios elevados, insira os comandos a seguir. Substitua w.x.y.z pelo endereço IP do computador host e n pelo número de porta escolhido:
bcdedit /debug on bcdedit /dbgsettings net hostip:w.x.y.z port:nPor exemplo:
bcdedit /debug on bcdedit /dbgsettings net hostip:192.168.1.100 port:50000BCDEdit 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.
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.fO computador de destino é reinicializado depois que um depurador de kernel é anexado.
Nota
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 estação de encaixe e você habilitar a depuração de rede para um adaptador de rede que faz parte da estação de encaixe, não remova o computador da estação de encaixe. Se você precisar remover o computador de destino da dock station, desative a depuração do kernel primeiro. Para desabilitar a depuração de kernel no computador de destino, abra uma linha de comando como administrador e digite o comando bcdedit /debug off. Reinicialize 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 de rede ou comutador.
Opção 1: Usar WinDbg (GUI)
- Abra o WinDbg no computador host.
- Selecione Arquivo>Depuração do Kernel.
- Abra a aba Net.
- Insira o número e a chave da porta.
- 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 inserindo o seguinte comando, onde n é o número da porta e MyKey é a chave gerada automaticamente pelo BCDEdit ao configurar 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. Insira o seguinte comando, em que n é o número da porta e MyKey é a chave gerada automaticamente pelo BCDEdit ao configurar 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 computador de destino
Quando o depurador se conectar e estiver aguardando, reinicie o computador de destino. Uma maneira de reiniciar o computador é usar esse comando no prompt de comando de um administrador:
shutdown -r -t 0
Quando o destino reinicia, o depurador no sistema operacional hospedeiro se conecta.
Depois de se conectar ao destino no host, selecione a opção para interromper no seu depurador e inicie a depuração.
Permitir que o depurador passe pelo firewall
Ao tentar estabelecer uma conexão de depuração de rede pela primeira vez, você pode ser solicitado a permitir que o aplicativo de depuração (WinDbg ou KD) acesse por meio do firewall. As versões do cliente do Windows exibem o prompt, mas as versões do 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 de seleção quando o prompt estava disponível, use o Painel de Controle para permitir o acesso por meio do firewall no computador host onde o depurador está sendo executado. Abra Painel de Controle > sistema e segurança e selecione Permitir um aplicativo por meio do 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 esses aplicativos por meio do firewall. Reinicie seu aplicativo de depuração (WinDbg ou KD).
Chave de criptografia
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. Caracteres válidos são as letras um até z e os dígitos 0 a 9. Caracteres especiais não são permitidos.
Para especificar sua própria chave, abra um prompt de comando com privilégios elevados no computador de destino. Insira o seguinte comando, em que w.x.y.z é o endereço IP do computador host, n é o número da porta e Key é 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 os dbgsettings.
Dicas de solução de problemas
Permitir o aplicativo de depuração por meio de firewalls
Ao tentar estabelecer uma conexão de depuração de rede pela primeira vez, você pode ser solicitado a permitir que o aplicativo de depuração (WinDbg ou KD) acesse por meio do firewall. As versões do cliente do Windows exibem o prompt, mas as versões do 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 marcar as caixas quando o prompt estiver disponível, deverá usar o Painel de Controle para permitir o acesso por meio do firewall. Abra Painel de Controle > sistema e segurança e selecione Permitir um aplicativo por meio do 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 esses aplicativos por meio do firewall. Role para baixo e selecione OK para salvar as alterações de firewall. Reinicie o depurador.
O número da porta deve estar no intervalo permitido pela política de rede
A política de rede da sua empresa pode limitar o intervalo de números de porta disponíveis para uso na depuração de rede. Para descobrir se a política da sua empresa limita o intervalo de portas para depuração de rede, verifique com o administrador de rede. No computador de destino, abra um prompt de comando como administrador e insira o comando bcdedit /dbgsettings. A saída deverá ser 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 de rede, insira o comando a seguir. 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 do computador de destino, execute novamente o depurador no computador 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>
Nota
Esse método 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 solicitações de ping, você não receberá respostas ao 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 DHCP (Dynamic Host Configuration Protocol) para obter um endereço IP roteável para o adaptador de rede usado para depuração. Se a KDNET receber um endereço atribuído por DHCP, os computadores host em qualquer lugar da rede serão capazes de depurar o computador de destino. Se a KDNET não conseguir obter um endereço atribuído a DHCP, ela usará a APIPA (Endereçamento IP Privado Automático) para obter um endereço IP de link local. 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 os computadores host e de destino no 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 um computador físico com uma NIC baseada em PCI ou PCIe, sempre especifique os parâmetros de barramento para a NIC que você pretende usar com 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 que aparece em Local na guia Geral. Em um prompt de comando elevado, insira o seguinte comando, onde 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 no computador host e aguardando a conexão, reinicie o computador de destino usando o seguinte comando:
shutdown -r -t 0
Manualmente, excluir entradas do BCDEdit
Normalmente, você não precisa excluir as entradas BCDEdit manualmente. No entanto, você pode usar esse procedimento para solucionar problemas de situações incomuns.
Você não precisa excluir entradas manualmente 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ê 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:
No computador de destino, abra um prompt de comando como administrador.
Como exemplo, insira 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.
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ê 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 VM (máquina virtual) Hyper-V, consulte Configurando a depuração de rede de uma máquina virtual – KDNET.
Habilitar a KDNET em um host Hyper-V que está 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 computador, cria um comutador de rede externo que aponta para uma NIC física no computador e configura as VMs para usar esse comutador externo para sua rede.
Habilite a KDNET no sistema operacional do host Hyper-V usando a mesma NIC física para a qual a opção de rede externa aponta. Reinicie o host.
Todas as VMs que usam o comutador externo configurado anteriormente perdem a conectividade de rede após a reinicialização.
Essa paralisação é por design. A KDNET assume controle exclusivo sobre a NIC configurada para uso. O sistema operacional não carrega o miniporto NDIS nativo para essa NIC. O comutador de rede externo não pode mais se comunicar com o driver de miniporto NDIS nativo e parar de funcionar. Para contornar essa situação, conclua as seguintes etapas:
Abra o Virtual Switch Manager no Hyper-V Manager 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.
Depois de atualizar a NIC do Comutador Virtual, desligue e reinicie suas VMs.
Quando você desativar a depuração KDNET, siga o mesmo procedimento para redirecionar o interruptor externo de volta para o miniporto NDIS nativo para a NIC. Caso contrário, a conectividade da VM será perdida quando você reinicializar o computador após a depuração ser desabilitada.
IPv6
O Windows versão 1809 adiciona suporte para IPv6.
Para usar o IPv6 com o depurador, conclua as seguintes etapas:
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.Use BCDEdit para excluir quaisquer valores de endereço IP existentes em dbgsettings.
bcdedit -deletevalue {dbgsettings} hostipDefina o endereço IPv6 do host. A
hostipv6=s:t:u:v:w:x:y:zcadeia de caracteres não pode conter espaços. <YourPort> é o número da porta de rede a ser usado para este computador 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>Digite este 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.No computador host, use o seguinte comando para iniciar o depurador:
Windbg -k net:port=<yournetworkportnumber>,key=<key_output_from_kdnet>,target=::<YourIPv6Address>Quando o depurador estiver em execução na máquina host e aguardando conexão, reinicie o computador de destino.
O depurador se conecta ao depurador do host logo no início da inicialização. Você pode ver que a 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.
Anotações
- Cada configuração bcd do depurador que permite especificar o elemento
hostiptem um elemento correspondentehostipv6. Há três pares.
| 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 |
Se você definir o endereço de estilo
hostipv6para qualquer um desses tipos de depuração, terá IPv6.Se você definir o
hostipendereço de estilo para qualquer um desses 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 usado é controlada pelos dbgsettings do computador de destino. Se você definir
hostip, o destino usará IPv4. Se você definirhostipv6, 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 do IPv6 no depurador no host, mas quiser que o depurador ouça uma conexão do destino, adicione
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 computador, o depurador converterá esse nome de computador em um endereço IPv4 e um endereço IPv6. Em seguida, o depurador tenta se conectar em ambos.Quando você especificar
target=na linha de comando do depurador e usar um endereço IP, se o endereço IP contiver algum : caracteres, o depurador assumirá que é um endereço IPv6 e forçará o uso do IPv6 para essa conexão. Se o endereço IP contiver qualquer . 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.
Conteúdo relacionado
Como configurar a depuração automática do kernel de rede KDNET
Configurando a depuração de rede de um host de máquina virtual
Configurando a depuração de rede de uma máquina virtual – KDNET
NICs Ethernet suportadas para depuração de kernel de rede no Windows 10
NICs Ethernet suportadas para depuração de kernel de rede no Windows 8.1