Configuración manual de la depuración en modo kernel de una máquina virtual con un puerto COM virtual
Herramientas de depuración para Windows admite la depuración de kernel de una máquina virtual. La máquina virtual se puede ubicar en el mismo equipo físico que el depurador o en un equipo diferente que esté conectado a la misma red. En este tema se describe cómo configurar la depuración de una máquina virtual manualmente mediante un puerto COM virtual a través de KDCOM.
El uso de redes virtuales KDNET es una opción más rápida y se recomienda. Para obtener más información, consulte Configuración de la depuración de red de una máquina virtual con KDNET.
Configuración de la máquina virtual de destino
El equipo que ejecuta el depurador se denomina equipo host y la máquina virtual que se está depurando se denomina máquina virtual de destino.
Importante
Antes de usar BCDEdit para cambiar la información de arranque, es posible que deba suspender temporalmente las características de seguridad de Windows, como BitLocker y Arranque seguro, en el equipo de prueba. Vuelva a habilitar estas características de seguridad cuando finalicen las pruebas y administre correctamente el equipo de prueba cuando se deshabiliten las características de seguridad.
En la máquina virtual, en una ventana del símbolo del sistema con privilegios elevados, escriba los siguientes comandos.
bcdedit /debug on
bcdedit /dbgsettings serial debugport:n baudrate:115200
donde n es el número de un puerto COM en la máquina virtual.
En la máquina virtual, configure el puerto COM para asignarlo a una canalización con nombre. El depurador se conectará a través de esta canalización. Para más información sobre cómo crear esta canalización, consulte la documentación de la máquina virtual.
Inicie el depurador en modo con privilegios elevados, por ejemplo desde un símbolo del sistema de administrador. El depurador debe ejecutarse en modo con privilegios elevados al depurar una máquina virtual a través de una canalización serie. Una vez conectado y en ejecución el depurador, reinicie la máquina virtual de destino.
Iniciar la sesión de depuración mediante WinDbg
En el equipo host, abra WinDbg como administrador. El depurador debe ejecutarse en modo con privilegios elevados al depurar una máquina virtual a través de una canalización serie. En el menú Archivo, elija Depuración de kernel. En el cuadro de diálogo Depuración de kernel, abra la pestaña COM. Active la casilla Canalización y active la casilla Volver a conectar. En Velocidad baudios, escriba 115200. En Resets (Restablecimientos), escriba 0.
Si el depurador se ejecuta en el mismo equipo que la máquina virtual, escriba lo siguiente en Puerto.
\\.\pipe\PipeName.
Si el depurador se ejecuta en un equipo diferente de la máquina virtual, escriba lo siguiente en Puerto.
\\VMHost\pipe\PipeName
Seleccione Aceptar.
También puede iniciar WinDbg en la línea de comandos. Si el depurador se ejecuta en el mismo equipo físico que la máquina virtual, escriba el siguiente comando en una ventana del símbolo del sistema.
windbg -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconexión
Si el depurador se ejecuta en un equipo físico diferente de la máquina virtual, escriba el siguiente comando en una ventana del símbolo del sistema.
windbg -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconexión
Iniciar la sesión de depuración mediante KD
Para depurar una máquina virtual que se ejecuta en el mismo equipo físico que el depurador, escriba el siguiente comando en una ventana del símbolo del sistema con privilegios elevados.
kd -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconexión
Para depurar una máquina virtual que se ejecuta en un equipo físico diferente del depurador, escriba el siguiente comando en una ventana del símbolo del sistema.
kd -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconexión
Parámetros
VMHost
Especifica el nombre del equipo en el que se ejecuta la máquina virtual.
PipeName
Especifica el nombre de la canalización que creó en la máquina virtual.
resets=0
Especifica que se puede enviar un número ilimitado de paquetes de restablecimiento al destino cuando el host y el destino se sincronizan. Use el parámetro resets=0 para Microsoft Virtual PC y otras máquinas virtuales cuyas canalizaciones bajen el exceso de bytes. No use este parámetro para VMware u otras máquinas virtuales cuyas canalizaciones no eliminen todos los bytes excesivos.
reconectar
Hace que el depurador desconecte y vuelva a conectar automáticamente la canalización si se produce un error de lectura y escritura. Además, si el depurador no encuentra la canalización con nombre cuando se inicia el depurador, el parámetro de reconexión hace que el depurador espere a que aparezca una canalización denominada PipeName . Use la reconexión para pc virtual y otras máquinas virtuales que destruyen y vuelven a crear sus canalizaciones durante un reinicio del equipo. No use este parámetro para VMware u otras máquinas virtuales que conserven sus canalizaciones durante un reinicio del equipo.
Para obtener más información sobre las opciones de línea de comandos adicionales, vea Opciones de línea de comandos KD o Opciones de línea de comandos de WinDbg.
Máquinas virtuales de generación 2
De forma predeterminada, los puertos COM no se presentan en las máquinas virtuales de generación 2. Puede agregar puertos COM a través de PowerShell o WMI. Para que los puertos COM se muestren en la consola del Administrador de Hyper-V, deben crearse con una ruta de acceso.
Para habilitar la depuración de kernel mediante un puerto COM en una máquina virtual de generación 2, siga estos pasos:
Para deshabilitar el arranque seguro, escriba este comando de PowerShell:
Set-VMFirmware –Vmname VmName –EnableSecureBoot Off
donde VmName es el nombre de la máquina virtual.
Para agregar un puerto COM a la máquina virtual, escriba este comando de PowerShell:
Set-VMComPort –VMName VmName 1 \\.\pipe\PipeName
Por ejemplo, el siguiente comando configura el primer puerto COM de la máquina virtual TestVM para conectarse a la canalización con nombre TestPipe en el equipo local.
Set-VMComPort –VMName TestVM 1 \\.\pipe\TestPipe
Una vez que el depurador está conectado y en ejecución, detenga e inicie la máquina virtual en frío para activar los puertos COM en la máquina virtual. El UARTS emulado no está disponible para la depuración a menos que al menos uno esté configurado realmente con un nombre de canalización y no se pueda agregar en caliente.
Vuelva a habilitar el arranque seguro una vez que haya terminado de actualizar los cambios de configuración.
Para obtener más información sobre las máquinas virtuales de generación 2, consulte Introducción a las máquinas virtuales de generación 2.
Observaciones
Si el equipo de destino ha dejado de responder, el equipo de destino todavía se detiene debido a una acción anterior de depuración del kernel o ha usado la opción de línea de comandos -b, el depurador se divide en el equipo de destino inmediatamente.
De lo contrario, el equipo de destino continúa ejecutándose hasta que el depurador lo ordena que se interrumpa.
Solución de problemas de firewalls y acceso a redes
El depurador (WinDbg o KD) debe tener acceso a través del firewall. Esto puede ser incluso el caso de los puertos serie virtuales admitidos por los adaptadores de red.
Si Windows le pide que desactive el firewall cuando se cargue el depurador, seleccione los tres cuadros.
En función de los detalles de la máquina virtual en uso, es posible que tenga que cambiar la configuración de red de las máquinas virtuales para enlazarlas al adaptador de depuración de red de kernel de Microsoft. De lo contrario, las máquinas virtuales no tendrán acceso a la red.
Firewall de Windows
Puede usar el Panel de control para permitir el acceso a través del firewall de Windows. Abra Panel de control > Sistema y seguridad y seleccione Permitir una aplicación a través del Firewall de Windows. En la lista de aplicaciones, busque Depurador simbólico de GUI de Windows y Depurador de kernel de Windows. Use las casillas para permitir esas dos aplicaciones a través del firewall. Reinicie la aplicación de depuración (WinDbg o KD).
Máquinas virtuales de terceros
VMWare Si reinicia la máquina virtual mediante las instalaciones de VMWare (por ejemplo, el botón restablecer), salga de WinDbg y, a continuación, reinicie WinDbg para continuar con la depuración. Durante la depuración de máquinas virtuales, VMWare suele consumir el 100 % de la CPU.
Vea también
Configuración de la depuración de red de una máquina virtual con KDNET
Configuración de la depuración manual del kernel
Configuración de la depuración de red de un host de máquina virtual