Como configurar a depuração de rede de uma máquina virtual ― KDNET

Este tópico descreve como configurar uma conexão de depuração de kernel com uma máquina virtual Hyper-V (VM).

Configuração da máquina virtual do Hyper-V

Para depurar uma máquina virtual (VM) do Hyper-V de 2ª geração, siga estas etapas.

1. Crie uma VM com Windows instalado

Para obter informações sobre como criar uma VM, consulte Criar uma máquina virtual com o Hyper-V.

2. Defina um comutador virtual externo

Para se comunicar com a VM, um comutador de rede externa virtual pode ser usado. Para obter mais informações sobre como criar um comutador de rede virtual externa, confira Criar uma rede virtual.

Quando o comutador de rede externa estiver configurado, as seguintes opções deverão ser definidas.

Opção Valor
Tipo de Conexão Rede externa
Permitir que o sistema de operacional de gerenciamento compartilhe esse adaptador de rede Enabled
ID DA VLAN Desabilitado

3. Desative a Inicialização Segura

Para permitir que o utilitário kdnet atualize as configurações de inicialização do BCDEdit, desabilite temporariamente a inicialização segura na máquina virtual seguindo estas etapas.

  1. Carregue o gerenciador do Hyper-V e selecione as propriedades da sua VM.

  2. Selecione as configurações Segurança.

  3. Desmarque a caixa de seleção Habilitar Inicialização Segura .

  4. Selecione OK para salvar as configurações.

Você pode reativar a Inicialização Segura depois de concluir a depuração e desativar a depuração do kernel na VM de destino.

4. Instale as ferramentas de depuração para o Windows

As ferramentas de depuração são usadas para o depurador e o utilitário kdnet e devem ser instaladas. Para obter informações sobre como baixar e instalar as ferramentas de depuração, consulte Ferramentas de depuração para Windows.

Como configurar a depuração de rede de uma máquina virtual ― KDNET

Registrar o endereço IP do host

Para executar o depurador de host no mesmo PC que a máquina virtual de destino, siga estas etapas.

  1. No sistema operacional do computador host, abra uma janela do prompt de comando e digite IPConfig para exibir a configuração do IP.

  2. Na saída do comando, localize o adaptador Ethernet que você configurou como o Comutador Virtual Externo.

    ...
    
    Ethernet adapter vEthernet (External Virtual Switch):
    
    ...
    
    IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
    
    ...
    
    

Dica

Pode haver várias entradas de adaptador com nomes semelhantes. Certifique-se de localizar o comutador virtual que você criou.

  1. Registre o endereço IPv4 do Comutador Virtual Externo que será usado como o endereço do host para depuração.

  2. Para confirmar a conectividade entre o computador de destino e o computador host, abra uma janela de prompt de comando elevada no computador de destino e digite o seguinte comando, em que YourHostIPAddress é o endereço IP do computador host.

    ping -4 <YourHostIPAddress>
    

Como configurar o computador de destino da VM

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

  1. Localize os arquivos WDK kdnet.exe e VerifiedNICList.xml. Por padrão, eles estão localizados aqui.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

Observação

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 Como escolher as ferramentas de depuração de 32 ou 64 bits.

  1. Para que seja possível recortar e colar a chave longa usada, habilite o suporte avançado da sessão. Na janela da VM, no menu suspenso Exibir, ative Sessão avançada.

  2. No computador da VM de destino, crie um diretório C:\KDNET e copie os arquivo kdnet.exe e VerifiedNICList.xml nesse diretório.

  3. No computador de destino, abra uma janela do 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
    
    Network debugging is supported on the following NICs:
    busparams=0.25.0, Intel(R) 82579LM Gigabit Network Connection, KDNET is running on this NIC.kdnet.exe
    
  4. Digite este comando para definir o endereço IP do sistema host e gerar uma chave de conexão exclusiva. Use o endereço IP do sistema host que você gravou anteriormente. Escolha um endereço de porta exclusivo para cada par de destino/host com o qual você trabalha, dentro do intervalo de 50000 a 50039. Neste exemplo, escolheremos 50005.

    C:\>kdnet <YourIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Microsoft Hypervisor Virtual Machine.
    Key=3u8smyv477z20.2owh9gl90gbxx.3sfsihzgq7di4.nh8ugnmzb4l7
    
    To debug this vm, run the following command on your debugger host machine.
    windbg -k net:port=50005,key=3u8smyv477z20.2owh9gl90gbxx.3sfsihzgq7di4.nh8ugnmzb4l7
    
    Then restart this VM by running shutdown -r -t 0 from this command prompt.
    
  5. Use CRTL+C para copiar a saída do Windbg fornecida para o buffer de comando. Isso evita a tentativa de anotar o valor de chave longa que é retornado.

  6. Reative o BitLocker e a Inicialização Segura quando terminar de definir as configurações do depurador.

  7. Como uma VM com suporte de sessão aprimorado pode atingir o tempo limite quando deixada em um ponto de interrupção, desabilite o suporte à sessão avançada usando o menu suspenso Exibir na VM.

  8. A VM será reiniciada depois que o depurador for carregado e executado. Este processo é descrito a seguir.

Como iniciar uma sessão de depuração

  1. Para se conectar ao PC de destino, use CTRL+V para colar na janela de comando principal do sistema operacional a cadeia de caracteres Windbg que foi retornada pelo kdnet que você copiou anteriormente.

    C:\Debuggers\windbg -k net:port=<YourDebugPort>,key=<YourKey> 
    

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. Você deve responder ao prompt marcando as caixas para os três tipos de rede: domínio, privado e público.

Como reiniciar o PC de destino

Depois que o depurador estiver conectado, reinicie o computador de destino. Para forçar a VM a reiniciar completamente, use este comando no prompt de comando de um administrador.

shutdown -r -t 0

Quando a máquina virtual de destino for reiniciada, o depurador no sistema operacional host deverá se conectar.

Depois de se conectar à VM, pressione break no depurador para iniciar a depuração.

Para oferecer suporte à conexão de depuração, um Adaptador de Rede de Depuração de Kernel é adicionado e fica visível nas propriedades de rede depois que a VM é reinicializada.

Solução de problemas de depuração de rede de máquina virtual KDNET

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

C:\>Ping <HostComputerIPAddress>

Algo não funcionou direito, e não sei o quê...

  • Certifique-se de ter deixado o WinDbg passar pelo firewall.
  • Confirme se você está usando uma chave exclusiva que foi gerada pelo BCDEdit ou kdnet.

Minhas VMs não têm conectividade de rede

  • Abra o Gerenciador de Comutador Virtual no Gerenciador do Hyper-V, selecione o Comutador Virtual existente e altere a NIC de rede externa para o Adaptador de Rede de Depuração do Kernel da Microsoft selecionando-o na caixa suspensa e selecionando OK na caixa de diálogo Gerenciador de Comutador Virtual. Depois de atualizar a NIC do Comutador Virtual, certifique-se de desligar e reiniciar as VMs.

Sequência para adicionar a função Hyper-V a um PC com Windows

Se o computador de destino for um host de máquina virtual, você poderá configurar a depuração de rede e ainda ter acesso à rede para as máquinas virtuais.

Suponha que você queira configurar a depuração de rede na seguinte situação.

  • O computador de destino tem uma única placa de interface de rede.
  • Você pretende instalar a função Hyper-V no computador de destino.
  • Você pretende criar uma ou mais máquinas virtuais no computador de destino.

A melhor abordagem é configurar a depuração de rede no computador de destino antes de instalar a função Hyper-V. Em seguida, as máquinas virtuais terão acesso à rede.

Se você decidir configurar a depuração de rede depois que a função Hyper-V tiver sido instalada no computador de destino, altere as configurações de rede para suas máquinas virtuais para conectá-las ao Adaptador de rede de depuração Kernel da Microsoft. Caso contrário, as máquinas virtuais não terão acesso à rede.

Consulte também

Como configurar a depuração no modo kernel de uma máquina virtual manualmente usando uma porta COM virtual

Como configurar uma conexão de rede manualmente