Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
- Adaptadores suportados para Windows 11
- Adaptadores suportados para Windows 10
- Adaptadores suportados para Windows 8.1
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.
No computador host, abra um prompt de comando e digite 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 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
Verifique se o computador de destino tem um adaptador de rede suportado. Para mais informações, consulte:
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.
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:nPor exemplo:
bcdedit /debug on bcdedit /dbgsettings net hostip:192.168.1.100 port:50000O 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.
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.fO 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)
- Abra o WinDbg no computador host.
- Selecione File>Kernel Debug.
- Abra a guia Rede .
- Introduza o número da porta e a chave.
- 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:
No computador de destino, abra um prompt de comando como administrador.
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.
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:
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.
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:
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.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 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>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.Na máquina 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 para se conectar, reinicie o computador de destino.
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
hostiptem um elementohostipv6correspondente. 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
hostipv6para qualquer um desses tipos de depuração, obterá IPv6.Se definir o estilo de endereço
hostippara 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ê definirhostipv6, 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.