[How to] Visual Studio Integrated Virtual Debugger de VMware

Visual Studio Integrated Virtual Debugger de la compañía VMware son unas extensiones para el entorno de desarrollo Microsoft Visual Studio 2005 Service Pack 1 o superior que nos permitiran, fundamentalmente, realizar las siguientes tareas:



  • Ejecutar una aplicación en una máquina virtual con un sistema operativo Microsoft Windows 98 o superior con y sin opción de debug activada



  • Adjuntar (to attach) una aplicación desarrollada en Microsoft Visual Studio a un proceso que corre en una máquina virtual con un sistema operativo Microsoft Windows 98 o superior.


Soporta aplicaciones escritas en lenguajes Visual Basic, Visual C# y C/C++ (tanto manejado como nativo).

Vamos a definir nuestro escenario para un sencillo ejemplo. Utilizaremos el producto VMware Workstation 6.5 beta e.x.p. build – 91182 y una máquina virtual con Microsoft Windows XP SP3, Microsoft .NET Framework 3.5 y las VMware Virtual Machine Tools.

Es muy importante tener las siguientes consideraciones en cuenta:



  • El usuario y la contraseña del host y de la máquina virtual tienen que ser el mismo.



  • El usuario debe de tener permisos de administrador en el sistema operativo de la máquina virtual.



  • El Firewall del sistema operativo de la máquina virtual debe de estar desactivado.



  • El nombre de red del sistema operativo de la máquina virtual debe de ser único en el dominio.



  • La configuración de red de la máquina virtual debe de ser Bridged o Host-Only.



  • En máquinas virtuales con Microsoft Windows XP Professional debemos ir a la opción Control Panel > Administrative Tools > Local Security Policy > Local Policies > Security Options page y colocar la opción  “Network access: Sharing and security model for local accounts” en “Classic – local users authenticated as themselves”.



  • Para permitir la ejecución de programas a través de red en nuestra máquina virtual, debemos de ir al menú Tools del Microsoft Internet Explorer y en Internet Options > Security > Local Intranet hacer click en Sites, click en Advanced y Add new Web site file://*..host


Ahora, en nuestro entorno de desarrollo Microsoft Visual Studio 2008, nos encontraremos con el menú VMware (o con una toolbar con las opciones equivalentes):

 cabecera


 


Vamos a proceder a crear un perfil en nuestra configuración para ejecutar nuestra aplicación en una máquina virtual determinada. En Options hacemos click en New:


New Configuration


 


Personalizamos nuestra configuración indicando, en la sección General, la ruta del ejecutable en el campo Command, que, en nuestro caso, es “C:UsersVicenteDocumentsVisual Studio 2008ProjectsEjemploVMwareEjemploVMwarebinDebugEjemploVMware.exe”. Por lo que ya habréis podido suponer que hay que compilar la aplicación antes de crear nuestro entorno de ejecución virtualizado.


fill general


 


La opción de Run Command as hace referencia a la ruta donde va a estar colocado el ejecutable, y podrá ser un directorio en el sistema operativo que hace de host o en el que se encuentra en la máquina virtual:


Run command as


 


Las siguientes opciones de Remote Debug Monitor y Remote Debug Monitor Name sirven para especificar la ruta del Remote Debugger (msvsmon.exe) en el equipo host y el nombre que queremos que tenga su instancia.


 


En el apartado Virtual Machine colocaremos la ruta del fichero .vmx de la máquina virtual en la que correremos nuestra aplicación, en nuestro caso “C:UsersVicenteDocumentsVirtual MachinesWindows XP Professional SP3Windows XP Professional SP3.vmx”, y, opcionalmente, podemos especificar la ruta de directorios compartidos entre el host y el sistema operativo de la máquina virtual en el campo Shared Folders.


fill virtual machine


 


En el apartado Pre-Debug Event podremos realizar diferentes labores de inicialización dentro del sistema operativo de la máquina virtual, con el objetivo de crear el entorno que nosotros deseemos antes de la ejecución de nuestra aplicación. La opción Revert to Parent Snapshot nos permitirá hacer regresar a la máquina virtual al una especie de punto de restauración llamado Snapshot que previamente hemos creado; por ejemplo, tener el sistema operativo recién instalado, sin ningún tipo de modificación. En la opción Copy Files  podemos indicarle un conjunto de ficheros separados por “;” para copiar del sistema operativo host a nuestra máquina virtual antes de que el proceso de debug comience. Command Line contiene un conjunto de comandos separados por “;” para ser ejecutados en la máquina virtual antes de la ejecución de nuestra aplicación.


fill pre debug event


 


El apartado de Post-Debug Event es similar al anterior, ya que son las acciones que se llevan a cabo una vez terminado el proceso de debug en la máquina virtual. La opción de Command Line nos permitirá ejecutar un conjuto de comandos separados por “;” una vez terminada la ejecución. Y, por último, la opción de Termination Mode nos permite elegir el estado que queremos que la máquina virtual tome una vez acabado el proceso de debug; podemos no realizar ninguna opción, apagar o suspender la máquina virtual o volver al estado anterior a través de un Snapshot.


fill post debug event


 


Bien, una vez definida nuestra configuración para la prueba sobre la máquina virtual con Microsoft Windows XP, vamos a proceder a la ejecución de nuestra aplicación. Una vez compilada nuestra solución, hacemos click en el menú VMware y, en esta ocásión, elegiremos Start.


Ahora tendremos una ventana de inicio de sesión con nuestro usuario y contraseña para poder pasar a ejecutar la aplicación en nuestra máquina virtual:


log in to run


Recordemos que el usuario y la contraseña deben de coincidir en el equipo host y en la máquina virtual y que, además, debe de tener permisos de administrador en la máquina virtual.


Y ahora vemos el resultado de nuestra ejecución en la máquina virtual, con nuestra aplicación ejecutándose y el monitor de debug:


virtual machine


 


Evidentemente, es un ejemplo muy simple, pero las posibilidades de ejecución y debug en un escenario controlado son muy interesantes para aplicaciones en las que nuestos equipos puedan correr algún tipo de riesgo o en el proceso de debug de proyectos de dudosa reputación 😛