Configuração de depuração Kernel-Mode de uma máquina virtual usando manualmente uma porta COM virtual
As Ferramentas de Depuração para Windows suportam a depuração do kernel de uma máquina virtual. A máquina virtual pode estar localizada no mesmo computador físico que o depurador ou em um computador diferente conectado à mesma rede. Este tópico descreve como configurar a depuração de uma máquina virtual manualmente usando uma porta COM virtual via KDCOM.
Usar a rede virtual KDNET é uma opção mais rápida e recomendada. Para obter mais informações, consulte Configurando a depuração de rede de uma máquina virtual com o KDNET.
Configurando a máquina virtual de destino
O computador que executa o depurador é chamado de computador anfitriãoe a máquina virtual em depuração é chamada de máquina virtual alvo .
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 computador de teste, quando os recursos de segurança estiverem desativados.
Na máquina virtual, numa janela elevada da Linha de Comandos, digite os seguintes comandos.
bcdedit /debug on
bcdedit /dbgsettings serial debugport:nbaudrate:115200
onde n é o número de uma porta COM na máquina virtual.
Na máquina virtual, configure a porta COM para associar a um tubo nomeado. O depurador se conectará através deste tubo. Para obter mais informações sobre como criar esse pipe, consulte a documentação da máquina virtual.
Inicie o depurador no modo elevado, por exemplo, a partir de uma linha de comando com privilégios de administrador. O depurador deve ser executado no modo elevado ao depurar uma VM através de um canal serial. Quando o depurador estiver conectado e em execução, reinicie a VM de destino.
Iniciando a sessão de depuração usando o WinDbg
No computador host, abra o WinDbg como administrador. O depurador deve ser executado em modo elevado ao depurar uma VM através de um canal serial. No menu File, escolha Kernel Debug. Na caixa de diálogo Depuração do kernel, abra o separador COM. Selecione as opções Pipe e Reconnect. Para Taxa de transmissão, digite 115200. Para redefinições de , insira 0.
Se o depurador estiver sendo executado no mesmo computador que a máquina virtual, digite o seguinte para Porta.
\\.\pipe\PipeName.
Se o depurador estiver a ser executado num computador diferente da máquina virtual, digite o seguinte para a porta .
\\ VMHost\pipe\PipeName
Selecione OK.
Você também pode iniciar o WinDbg na linha de comando. Se o depurador está a ser executado no mesmo computador físico que a máquina virtual, digite o seguinte comando numa janela de linha de comandos.
windbg -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconnect
Se o depurador estiver a ser executado num computador físico distinto da máquina virtual, introduza o seguinte comando numa janela da Linha de Comandos.
windbg -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect
Iniciando a sessão de depuração usando o KD
Para depurar uma máquina virtual que esteja sendo executada no mesmo computador físico que o depurador, digite o seguinte comando em uma janela elevada Prompt de Comando.
kd -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconnect
Para depurar uma máquina virtual que está a ser executada num computador físico diferente do depurador, digite o seguinte comando numa janela da Linha de Comandos.
kd -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect
Parâmetros
VMHost
Especifica o nome do computador em que a máquina virtual está sendo executada.
PipeName
Especifica o nome do tubo que criaste na máquina virtual.
redefinições = 0
Especifica que um número ilimitado de pacotes de redefinição pode ser enviado para o destino quando o host e o destino estão sincronizando. Use o parâmetro resets=0 para o Microsoft Virtual PC e outras máquinas virtuais cujos pipes soltam bytes em excesso. Não use esse parâmetro para VMware ou outras máquinas virtuais cujos pipes não descartam todos os bytes em excesso.
reconectar
Faz com que o depurador desconecte e reconecte automaticamente o pipe se ocorrer uma falha de leitura/gravação. Além disso, se o depurador não encontrar o pipe nomeado quando o depurador for iniciado, o parâmetro reconnect fará com que o depurador aguarde até que um pipe com o nome PipeName apareça. Use reconectar para Virtual PC e outras máquinas virtuais que destroem e recriam seus tubos durante uma reinicialização do computador. Não use esse parâmetro para VMware ou outras máquinas virtuais que preservam seus pipes durante uma reinicialização do computador.
Para obter mais informações sobre opções adicionais de linha de comando, consulte Opções Command-Line KD ou Opções Command-Line WinDbg.
Máquinas Virtuais de 2ª Geração
Por padrão, as portas COM não são apresentadas em máquinas virtuais de 2ª geração. Você pode adicionar portas COM por meio do PowerShell ou WMI. Para que as portas COM sejam exibidas no console do Hyper-V Manager, elas devem ser criadas com um caminho.
Para habilitar a depuração do kernel usando uma porta COM em uma máquina virtual de geração 2, siga estas etapas:
Desative a Inicialização Segura inserindo este comando do PowerShell:
Set-VMFirmware –VmnameVmName–EnableSecureBoot Off
onde VmName é o nome da sua máquina virtual.
Adicione uma porta COM à máquina virtual inserindo este comando do PowerShell:
Set-VMComPort –VMNameVmName1 \\.\pipe\PipeName
Por exemplo, o comando a seguir configura a primeira porta COM na máquina virtual TestVM para se conectar ao pipe nomeado TestPipe no computador local.
Set-VMComPort –VMName TestVM 1 \\.\pipe\TestPipe
Depois que o depurador estiver conectado e em execução, pare e inicie a VM a frio para ativar as portas COM na VM. Os UARTS emulados não estão disponíveis para depuração, a menos que um deles seja configurado com um nome de pipe, e não podem ser adicionados durante a execução.
Reative a inicialização segura, assim que terminar de atualizar as alterações de configuração.
Para obter mais informações sobre VMs de 2ª geração, consulte Resumo das Máquinas Virtuais de 2ª Geração.
Comentários
Se o computador de destino parou de responder, o computador de destino ainda está parado devido a uma ação de depuração do kernel anterior ou você usou a opção de linha de comando -b, o depurador invade o computador de destino imediatamente.
Caso contrário, o computador de destino estará em execução até que o depurador ordene que ele interrompa.
Solução de problemas de firewalls e acesso à rede
Seu depurador (WinDbg ou KD) deve ter acesso através do firewall. Este pode até ser o caso de portas seriais virtuais que são suportadas por adaptadores de rede.
Se o Windows lhe pedir para desativar a firewall quando o depurador for carregado, selecione todas as três caixas.
Dependendo das especificidades da VM em uso, talvez seja necessário alterar as configurações de rede de suas máquinas virtuais para fazer a ponte com o Microsoft Kernel Network Debug Adapter. Caso contrário, as máquinas virtuais não terão acesso à rede.
do Firewall do Windows
Pode utilizar o Painel de Controlo para permitir o acesso através da firewall do Windows. Abra o Painel de Controle > Sistema e Segurança e selecione Permitir um aplicativo através do Firewall do Windows. Na lista de aplicativos, localize Windows GUI Symbolic Debugger e Windows Kernel Debugger. Use as caixas de seleção para permitir esses dois aplicativos através do firewall. Reinicie o aplicativo de depuração (WinDbg ou KD).
VMs de terceiros
VMWare
Se você reiniciar a máquina virtual usando os recursos VMWare (por exemplo, o botão de redefinição), saia do WinDbg e, em seguida, reinicie o WinDbg para continuar a depuração. Durante a depuração da máquina virtual, o VMWare geralmente consome 100% da CPU.
Ver também
Configurando a depuração de rede de uma máquina virtual com o KDNET
Configurando Kernel-Mode Depuração Manualmente
Configurando a depuração de rede de um anfitrião de máquina virtual