Partilhar via


Configurando a depuração de rede de uma máquina virtual - KDNET

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

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

Para depurar uma máquina virtual (VM) Hyper-V Gen 2, siga as etapas abaixo.

1. Crie uma VM com o 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 virtual externa pode ser usado. Para obter informações sobre como criar um comutador de rede externo, consulte Criar uma rede virtual.

Quando o comutador de rede externo está configurado, as seguintes opções devem ser definidas.

Opção Valor
Tipo de Ligação Rede Externa
Permitir que o sistema operacional de gerenciamento compartilhe este adaptador de rede Ativado(a)
ID de VLAN. Desabilitado

3. Desative a Inicialização Segura

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

  1. Carregue o gerenciador de Hyper-V e selecione as propriedades para sua VM.

  2. Selecione as Configurações de segurança .

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

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

Você pode reativar a Inicialização Segura assim que terminar a depuração e tiver desabilitado a depuração do kernel na VM de destino.

4. Instale as ferramentas de depuração para 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.

Configurando a depuração de rede de uma máquina virtual - KDNET

Registre o endereço IP do host

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

  1. No SO do computador anfitrião, abra uma janela da Linha de Comandos e introduza IPConfig para apresentar a configuração 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>
    
    ...
    
    

Sugestão

Pode haver várias entradas de adaptador com nomes semelhantes. Certifique-se e localize 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, onde YourHostIPAddress é o endereço IP do computador host.

    ping -4 <YourHostIPAddress>
    

Configurando o computador de destino da VM

Use o utilitário kdnet.exe para configurar 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

Estas instruções pressupõem que ambos os PCs estão a executar uma versão de 64 bits do Windows no destino e no anfitrião. Se tal não for o caso, a melhor abordagem é executar a mesma versão de ferramentas no host em que o destino está a correr. Por exemplo, se o destino estiver executando o Windows de 32 bits, execute uma versão 32 do depurador no host. Para obter mais informações, consulte Escolhendo as ferramentas de depuração de 32 bits ou 64 bits.

  1. Para permitir que a tecla longa usada seja cortada e colada, habilite o suporte aprimorado à sessão. Na janela da máquina virtual, no menu suspenso Exibir, ative Sessão melhorada.

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

  3. No computador de destino, abra uma janela da Linha de Comandos enquanto Administrador. Insira este comando para verificar se o computador de destino tem um adaptador de rede suportado.

    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-50039. Para este exemplo, selecionaremos 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 CTRL+C para copiar a saída fornecida do Windbg para o buffer de comandos. Evita-se assim a tentativa de escrever o valor longo da chave que é retornado.

  6. Reative o BitLocker e a inicialização segura quando terminar de configurar as definições do depurador.

  7. Como uma VM com suporte de sessão avançado pode atingir o tempo limite quando é deixada em um ponto de interrupção, desative o suporte de sessão avançado 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.

Iniciando a 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, você pode ser solicitado a permitir o acesso ao aplicativo de depuração (WinDbg ou KD) através do firewall. Você deve responder ao prompt marcando as caixas para todos os três tipos de rede: domínio, privado e público.

Reiniciar o PC de destino

Quando o depurador está ligado, reinicie o computador alvo. Para forçar a VM a reiniciar completamente, use este comando na linha de comandos de um administrador.

shutdown -r -t 0

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

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

Para suportar a conexão de depuração, um adaptador de rede de depuração do kernel é adicionado e visível nas propriedades de rede depois que a VM é reinicializada.

Resolução de problemas na depuração de rede em máquinas virtuais com 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 bem e não sei o que...

  • 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 Virtual Switch Manager a partir do Hyper-V Manager, selecione o seu Comutador Virtual existente e altere a NIC de rede externa para o Microsoft Kernel Debug Network Adapter selecionando-o na caixa suspensa e, em seguida, selecionando OK na caixa de diálogo Virtual Switch Manager. Depois de atualizar a placa de rede do comutador virtual, desligue e reinicie 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 após a função Hyper-V ter sido instalada no computador de destino, deverá alterar as configurações de rede de suas máquinas virtuais para fazer a ponte entre elas e o Adaptador de Depuração de Rede do Kernel da Microsoft. Caso contrário, as máquinas virtuais não terão acesso à rede.

Ver também

Configuração de depuração do Kernel-Mode de uma máquina virtual manualmente usando uma porta COM virtual

Configurando uma conexão de rede manualmente