Compartir a través de


Configuración manual de la depuración en modo kernel de una máquina virtual con un puerto COM virtual

Las herramientas de depuración para Windows admiten la depuración del núcleo 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 el debug de una máquina virtual manualmente usando 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 hosty 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 se completen las pruebas y administren correctamente el equipo de prueba cuando se deshabilitan las características de seguridad.

  1. En la máquina virtual, en una ventana elevada de símbolo del sistema, introduzca los siguientes comandos.

    bcdedit /debug on

    bcdedit /dbgsettings serial debugport:nbaudrate:115200

    donde n es el número de un puerto COM en la máquina virtual.

  2. 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 este pipe. Para más información sobre cómo crear esta canalización, consulte la documentación de la máquina virtual.

  3. Inicie el depurador en modo elevado, por ejemplo, desde un símbolo del sistema de administrador. El depurador debe ejecutarse en modo elevado cuando se depura una VM a través de una pipe serie. Una vez conectado y en ejecución el depurador, reinicie la máquina virtual de destino.

Iniciando la sesión de depuración con WinDbg

En el equipo host, abra WinDbg como administrador. El depurador debe ejecutarse en modo elevado cuando se depura una VM a través de una pipe serie. En el menú Archivo, elija Depuración de kernel. En el cuadro de diálogo Depuración del Kernel, abra la pestaña COM. Marque la casilla Pipe, y marque la casilla Reconnect. Para Tasa de baudios, introduzca 115200. En Restablecimientos, escriba 0.

Si el depurador se está ejecutando en el mismo ordenador que la máquina virtual, introduzca lo siguiente para Puerto.

\\.\pipe\PipeName.

Si el depurador se está ejecutando en un equipo diferente de la máquina virtual, introduzca lo siguiente para 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 de comandos.

windbg -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconnect

Si el depurador se ejecuta en un equipo físico diferente de la máquina virtual, escriba el siguiente comando en una ventana de la línea de comandos.

windbg -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect

Inicio de la sesión de depuración con KD

Para depurar una máquina virtual que se está ejecutando en el mismo equipo físico que el depurador, introduzca el siguiente comando en una ventana elevada del símbolo del sistema.

kd -k com:pipe,port=\\.\pipe\PipeName,resets=0,reconnect

Para depurar una máquina virtual que se está ejecutando en un equipo físico diferente del depurador, introduzca el siguiente comando en una ventana del símbolo del sistema.

kd -k com:pipe,port=\\VMHost\pipe\PipeName,resets=0,reconnect

Parámetros

VMHost
Especifica el nombre del equipo en el que se ejecuta la máquina virtual.

Nombre de tubería
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. Utilice el parámetro resets=0 para Microsoft Virtual PC y otras máquinas virtuales cuyas pipes sueltan bytes en exceso. 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 reconecte automáticamente la tubería si se produce un fallo de lectura/escritura. Además, si el depurador no encuentra la tubería nombrada cuando se inicia el depurador, el parámetro reconectar hace que el depurador espere a que aparezca una tubería que se llame PipeName. Use reconectar para PC Virtual y otras máquinas virtuales que destruyen y recrean sus pipes durante el 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, consulte KD Command-Line Opciones o WinDbg Command-Line Opciones.

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 de Hyper-V Manager, 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:

  1. Para deshabilitar el arranque seguro, escriba este comando de PowerShell:

    Set-VMFirmware –VmnameVmName–EnableSecureBoot Off

    donde VmName es el nombre de la máquina virtual.

  2. Para agregar un puerto COM a la máquina virtual, escriba este comando de PowerShell:

    Set-VMComPort –VMNameVmName1 \\.\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

  3. Una vez que el depurador esté conectado y funcionando, detenga e inicie en frío la VM para activar los puertos COM en la VM. Los UARTS emulados no están disponibles para la depuración a menos que al menos uno esté configurado con un nombre de pipe y no puedan ser añadidos en caliente.

  4. 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 de .

Observaciones

Si el equipo de destino ha dejado de responder, el equipo de destino sigue detenido debido a una acción anterior de depuración del kernel, o usted utilizó la opción -bcommand-line, el depurador irrumpe en el equipo de destino inmediatamente.

De lo contrario, el ordenador de destino sigue funcionando hasta que el depurador le ordena que se detenga.

Solución de problemas de firewalls y acceso a redes

Su 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.

Dependiendo de las especificaciones de la VM en uso, puede que necesite cambiar la configuración de red de sus máquinas virtuales para puentearlas 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 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 utilizando las facilidades de VMWare (por ejemplo, el botón de reinicio), salga de WinDbg, y luego reinicie WinDbg para continuar con la depuración. Durante la depuración de la máquina virtual, VMWare suele consumir el 100% de la CPU.

Consulte 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 - KDNET