Depurar un servicio de Azure Cloud Services (soporte extendido) en Visual Studio
Visual Studio ofrece distintas opciones para la depuración de Azure Cloud Services (soporte extendido) y máquinas virtuales.
Requisitos previos
- Visual Studio (consulte [Descargas de Visual Studio] (https://visualstudio.microsoft.com/downloads/?cid=learn-onpage-download-cta)) con la carga de trabajo Desarrollo de Azure instalada y las plantillas de proyecto y elementos de .NET Framework de Componente individual instaladas. Vea Modificación de Visual Studio.
- Una cuenta de Azure. Si no tiene una cuenta de Azure, active las Ventajas de Azure para suscriptores de Visual Studio o regístrese para obtener una evaluación gratuita.
Depuración del servicio en la nube en el equipo local
Puede ahorrar tiempo y dinero si utiliza el emulador de proceso de Azure para depurar su servicio en la nube en un equipo local. La depuración de un servicio localmente antes de su implementación puede mejorar la fiabilidad y el rendimiento sin pagar por tiempo de proceso. No obstante, pueden producirse algunos errores solo al ejecutar un servicio en la nube en el propio Azure. Puede depurar estos errores si habilita la depuración remota al publicar el servicio y luego adjuntar el depurador a una instancia de rol.
El emulador simula el servicio Azure Compute y se ejecuta en el entorno local para que pueda probar y depurar el servicio en la nube antes de implementarlo. El emulador administra el ciclo de vida de sus instancias de rol y proporciona acceso a recursos simulados, tales como el almacenamiento local. Al depurar o ejecutar el servicio desde Visual Studio, este entorno inicia automáticamente el emulador como una aplicación en segundo plano y después implementa el servicio en el emulador. Puede utilizar el emulador para ver su servicio cuando se ejecuta en el entorno local. Puede ejecutar la versión completa o la versión Express del emulador. Consulte Using Emulator Express to Run and Debug a Cloud Service Locally (Uso del emulador rápido para ejecutar y depurar localmente un servicio en la nube).
Para depurar el servicio en la nube en el equipo local
En la barra de menús, seleccione Depurar>Iniciar depuración para ejecutar el proyecto de Azure Cloud Services (soporte extendido). Como alternativa, puede presionar F5. Verá un mensaje que indica que el emulador de proceso se está iniciando. Cuando se inicia el emulador, el icono de bandeja del sistema lo confirma.
Visualice la interfaz de usuario del emulador de proceso; para ello, abra el menú contextual del icono de Azure en el área de notificación y haga clic en Show Compute Emulator UI(Mostrar la UI del emulador de proceso).
El panel izquierdo de la interfaz de usuario muestra los servicios implementados actualmente en el emulador de proceso y las instancias de rol que cada servicio ejecuta. Puede elegir el servicio o los roles para mostrar información sobre el ciclo de vida, el registro y el diagnóstico en el panel derecho. Si coloca el foco en el margen superior de una ventana incluida, se expande para rellenar el recuadro derecho.
Recorra la aplicación, para lo que debe seleccionar los comandos del menú Depurar y establecer puntos de interrupción en el código. A medida que recorre la aplicación en el depurador, los paneles se actualizan con el estado actual de la aplicación. Cuando se detiene la depuración, se elimina la implementación de aplicaciones. Si la aplicación incluye un rol web y ha establecido la propiedad acción de inicio para iniciar el explorador web, Visual Studio inicia la aplicación web en el explorador. Si cambia el número de instancias de un rol en la configuración del servicio, debe detener el servicio en la nube y, luego, reinicie la depuración para que pueda depurar estas nuevas instancias del rol.
Nota:
cuando se deja de ejecutar o depurar el servicio, el emulador de proceso y el emulador de almacenamiento locales no se detienen. Debe detenerlos explícitamente en el área de notificación.
Depuración de un servicio en la nube en Azure
Si habilita la depuración remota en un servicio en la nube mediante el procedimiento que se indica en esta sección, este no mostrará un rendimiento inferior ni incurrirá en cargos adicionales. No use la depuración remota en un servicio de producción, porque podría perjudicar a los clientes que usan el servicio.
Para habilitar la depuración remota en un servicio en la nube (soporte extendido)
Agregue un punto de conexión al archivo ServiceDefinition.csdef para el puerto msvsmon predeterminado. En el caso de Visual Studio 2019, es 4024.
<Endpoints> <InputEndpoint name="RemoteDebug" protocol="tcp" port="4024" localPort="4024" /> </Endpoints>
Nota:
Otras versiones de Visual Studio tienen diferentes puertos Asignaciones de puerto del depurador remoto.
Abra el menú contextual del proyecto de Azure y seleccione Publicar.
Seleccione el entorno de ensayo y la configuración de depuración.
Esto es solo de referencia. Puede optar por ejecutar sus entornos de prueba en un entorno de producción. No obstante, puede perjudicar a los usuarios si habilita la depuración remota en el entorno de producción. Puede seleccionar la configuración Liberar, pero la configuración Depurar simplifica la depuración.
Siga los pasos habituales descritos en Cloud Services (soporte extendido), pero active la casilla Habilitar Escritorio remoto para todos los roles.
Se le pedirá que cree un nombre de usuario y una contraseña para el usuario de Escritorio remoto, ya que los necesitará más adelante para iniciar sesión en esa máquina virtual.
Pase a la siguiente pantalla, examine la configuración y, cuando esté lista, haga clic en Publicar y espere hasta que finalice la implementación.
Inicie sesión en Azure Portal y vaya al servicio en la nube (soporte extendido) que desea depurar.
Elija Roles e instancias en el panel izquierdo y, después, elija el rol que desea depurar de forma remota.
Haga clic en Conectar en el menú emergente Instancia de rol de la derecha y elija el botón Conectar para descargar un archivo de Escritorio remoto que le permitirá iniciar sesión en la máquina virtual. Inicie sesión con las credenciales que creó al habilitar el Escritorio remoto en un paso anterior.
En la máquina virtual remota de Azure, instale las herramientas remotas de Visual Studio 2019 como se describe en Depuración remota.
En el escritorio de la máquina virtual, ejecute el comando D:\Archivos de programa (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe. Asegúrese de ejecutarlo como administrador.
Acepte mensajes para permitir el acceso a través del firewall. Debería ver un mensaje que indica que msvsmon.exe ha empezado a escuchar las conexiones.
En el portal Azure, abra el grupo de recursos y obtenga la dirección IP pública para el servicio en la nube (soporte ampliado).
Para asociar el depurador a un servicio en la nube (soporte extendido) en Azure
Nota:
Siempre que sea posible, debe realizar la depuración con la configuración Depurar elegida en el proceso de Publicar, pero si va a depurar una configuración de Liberar, en Visual Studio, use Ctrl+Q para buscar "Solo mi código" y desactive Habilitar solo mi código en Herramientas>Options>Depurador>General. Las versiones de lanzamiento están optimizadas y, por consiguiente, no se consideran "My code".
Elija Depurar>Asociar al proceso (o presione Ctrl+Alt+P).
Mantenga el tipo de conexión en Predeterminado.
Escriba el destino de la conexión, para lo que debe usar la dirección IP y el puerto:
{ipaddress}:4024
.En Adjuntar a, seleccione Automático.
Inicie sesión con las mismas credenciales que el usuario de Escritorio remoto.
Seleccione Mostrar proceso para todos los usuarios. Si va a depurar un rol de trabajo, adjunte a WaWorkerHost.exe; si está depurando un rol web, adjunte al proceso de w3wp.exe; para un rol de API web, es WaIISHost.exe.
Establezca puntos de interrupción (vaya a la línea y presione F9), acceda a la dirección URL pública del sitio y reproduzca el escenario para la depuración.
Para habilitar la depuración remota en un servicio en la nube (soporte extendido)
Agregue un punto de conexión al archivo ServiceDefinition.csdef para el puerto msvsmon predeterminado. En el caso de Visual Studio 2022, es 4026, mientras que en Visual Studio 2019 es 4024.
<Endpoints> <InputEndpoint name="RemoteDebug" protocol="tcp" port="4026" localPort="4026" /> </Endpoints>
Nota:
Otras versiones de Visual Studio tienen diferentes puertos Asignaciones de puerto del depurador remoto.
Si tiene como destino .NET 4.8, asegúrese de abrir el archivo ServiceConfiguration.Cloud.cscfg y comprobar el valor del atributo
osFamily
en el elementoServiceConfiguration
al publicar Cloud Services (soporte extendido). En el caso de un proyecto de .NET 4.8, useosFamily="7"
.Abra el menú contextual del proyecto de Azure y seleccione Publicar.
Seleccione el entorno de ensayo y la configuración de depuración.
Esto es solo de referencia. Puede optar por ejecutar sus entornos de prueba en un entorno de producción. No obstante, puede perjudicar a los usuarios si habilita la depuración remota en el entorno de producción. Puede seleccionar la configuración Liberar, pero la configuración Depurar simplifica la depuración.
Siga los pasos habituales descritos en Cloud Services (soporte extendido), pero active la casilla Habilitar Escritorio remoto para todos los roles.
Se le pedirá que cree un nombre de usuario y una contraseña para el usuario de Escritorio remoto, ya que los necesitará más adelante para iniciar sesión en esa máquina virtual.
Pase a la siguiente pantalla, examine la configuración y, cuando esté lista, haga clic en Publicar y espere hasta que finalice la implementación.
Inicie sesión en Azure Portal y vaya al servicio en la nube (soporte extendido) que desea depurar.
Elija Roles e instancias en el panel izquierdo y, después, elija el rol que desea depurar de forma remota.
Haga clic en Conectar en el menú emergente Instancia de rol de la derecha y elija el botón Conectar para descargar un archivo de Escritorio remoto que le permitirá iniciar sesión en la máquina virtual. Inicie sesión con las credenciales que creó al habilitar el Escritorio remoto en un paso anterior.
En la máquina virtual remota de Azure, instale las herramientas remotas de Visual Studio 2022 como se describe en Depuración remota.
En el escritorio de la máquina virtual, ejecute el comando msvsmon.exe en la carpeta de instalación de Visual Studio en
Common7\IDE\Remote Debugger\x64
. Asegúrese de ejecutarlo como administrador.Acepte mensajes para permitir el acceso a través del firewall. Debería ver un mensaje que indica que msvsmon.exe ha empezado a escuchar las conexiones.
En el portal Azure, abra el grupo de recursos y obtenga la dirección IP pública para el servicio en la nube (soporte ampliado).
Para asociar el depurador a un servicio en la nube (soporte extendido) en Azure
Nota:
Siempre que sea posible, debe realizar la depuración con la configuración Depurar elegida en el proceso de Publicar, pero si va a depurar una configuración de Liberar, en Visual Studio, use Ctrl+Q para buscar "Solo mi código" y desactive Habilitar solo mi código en Herramientas>Options>Depurador>General. Las versiones de lanzamiento están optimizadas y, por consiguiente, no se consideran "My code".
Elija Depurar>Asociar al proceso (o presione Ctrl+Alt+P).
Mantenga el tipo de conexión en Predeterminado.
Escriba el destino de la conexión, para lo que debe usar la dirección IP y el puerto:
{ipaddress}:4026
.En Adjuntar a, seleccione Automático.
Inicie sesión con las mismas credenciales que el usuario de Escritorio remoto.
Seleccione Mostrar proceso para todos los usuarios. Si va a depurar un rol de trabajo, adjunte a WaWorkerHost.exe; si está depurando un rol web, adjunte al proceso de w3wp.exe; para un rol de API web, es WaIISHost.exe.
Establezca puntos de interrupción (vaya a la línea y presione F9), acceda a la dirección URL pública del sitio y reproduzca el escenario para la depuración.
Limitaciones de la depuración remota en Azure
La depuración remota presenta las siguientes limitaciones:
Con la depuración remota habilitada, no puede publicar un servicio en la nube que presente algún rol con más de 25 instancias.
El depurador usa los puertos de 30400 a 30424, de 31400 a 31424 y de 32400 a 32424. Si intenta usar alguno de estos puertos, no podrá publicar su servicio y aparecerá uno de los siguientes mensajes de error en el registro de actividad de Azure:
- Error al validar el archivo .cscfg con el archivo .csdef.
El intervalo de puertos reservado 'range' para el extremo
Microsoft.WindowsAzure.PlugIns.RemoteDebugger.Connector
del rol 'role' se superpone con un intervalo o puerto ya definido. - Error en la asignación. Vuelva a intentarlo más tarde, intente reducir el tamaño de la VM o el número de instancias de rol, o intente implementar en una región distinta.
- Error al validar el archivo .cscfg con el archivo .csdef.
El intervalo de puertos reservado 'range' para el extremo
Depuración de Azure App Service
Para depurar programas que se ejecutan en Azure App Service, utilice el cuadro de diálogo Asociar al proceso en Visual Studio.
Nota:
Esto solo está disponible para Azure App Service a partir de la versión 17.1 de Visual Studio 2022.
Para depurar una instancia de Windows Azure App Service
En Depurar, seleccione Asociar al proceso.
Cambie Tipo de conexión a Microsoft Azure App Services y, después, seleccione Buscar.
En el cuadro de diálogo que se abre, seleccione el nombre de la suscripción.
Nota:
Es preciso que haya iniciado sesión en una cuenta Microsoft con acceso a la suscripción que contiene Azure App Service.
Filtre la vista por grupo de recursos o tipo de recurso, o realice una búsqueda por nombre.
Luego, seleccione la instancia de App Service que desea depurar y seleccione Aceptar.
Esto permite la depuración remota en App Service y muestra una lista de los procesos disponibles a los que puede realizar la asociación.
Seleccione el proceso al que desea asociar y elija Asociar para iniciar la depuración.
Depuración de máquinas virtuales de Azure
Puede depurar programas que se ejecuten en máquinas virtuales de Azure usando el Explorador de servidores en Visual Studio. Si habilita la depuración remota en una máquina virtual de Azure, Azure instalará la extensión de depuración remota en la máquina virtual. A continuación, podrá asociarla a procesos en la máquina virtual y realizar la depuración como lo haría normalmente.
Nota:
Las máquinas virtuales creadas a través de la pila del Administrador de recursos de Azure se pueden depurar remotamente mediante Cloud Explorer en Visual Studio de 2019. Para obtener más información, consulte Administración de recursos de Azure con Cloud Explorer.
Para depurar una máquina virtual de Azure
En el Explorador de servidores, expanda el nodo Máquinas virtuales y seleccione el nodo de la máquina virtual que desea depurar.
Abra el menú contextual y seleccione Habilitar depuración. Cuando se le pida que confirme si quiere habilitar la depuración en la máquina virtual, seleccione Sí.
Azure instala la extensión de depuración remota en la máquina virtual para habilitar la depuración.
Cuando la extensión de depuración remota finalice la instalación, abra el menú contextual de la máquina virtual y seleccione Asociar depurador...
Azure obtiene una lista de los procesos en la máquina virtual y los muestra en el cuadro de diálogo Asociar al proceso.
En el cuadro de diálogo Asociar al proceso, elija Seleccionar para limitar la lista de resultados de forma que solo se muestren los tipos de código que quiere depurar. Puede depurar código administrado de 32 o 64 bits, código nativo o ambos.
Seleccione los procesos que quiere depurar en la máquina virtual y después seleccione Asociar. Por ejemplo, puede seleccionar el proceso w3wp.exe si desea depurar una aplicación web en la máquina virtual. Consulte Depuración de uno o varios procesos en Visual Studio y Arquitectura de roles de Azure para más información.
Creación de un proyecto web y una máquina virtual para la depuración
Antes de publicar el proyecto de Azure, es posible que le resulte útil probarlo en un entorno contenido que sea compatible con los entornos de depuración y pruebas, y en el que pueda instalar programas de pruebas y supervisión. Una manera de ejecutar tales pruebas es depurar su aplicación de forma remota en una máquina virtual.
Los proyectos ASP.NET de Visual Studio ofrecen una opción para crear una práctica máquina virtual que se puede usar para probar aplicaciones. La máquina virtual incluye los puntos de conexión requeridos habitualmente, como PowerShell, Escritorio remoto y Web Deploy.
Para crear de un proyecto web y una máquina virtual para la depuración
En Visual Studio, cree una nueva aplicación web ASP.NET.
En el cuadro de diálogo Nuevo proyecto ASP.NET, en la sección Azure, seleccione Máquina virtual en el cuadro de lista desplegable. Deje la casilla Crear recursos remotos activada. Seleccione Aceptar para continuar.
Aparece el cuadro de diálogo Crear máquina virtual en Azure.
Nota:
se le pedirá que inicie sesión en la cuenta de Azure si todavía no lo ha hecho.
Elija los distintos valores de configuración de la máquina virtual y después seleccione Aceptar. Consulte Máquinas virtuales para obtener más información.
El nombre que escriba como nombre DNS será el nombre de la máquina virtual.
Azure crea la máquina virtual y, después, aprovisiona y configura los extremos, como Escritorio remoto y Web Deploy.
Cuando la máquina virtual esté completamente configurada, seleccione el nodo de la máquina virtual en el Explorador de servidores.
Abra el menú contextual y seleccione Habilitar depuración. Cuando se le pida que confirme si quiere habilitar la depuración en la máquina virtual, seleccione Sí.
Azure instala la extensión de depuración remota en la máquina virtual para habilitar la depuración.
Publique su proyecto tal y como se describe en Implementación de un proyecto web utilizando publicación con un solo clic en Visual Studio. Dado que desea realizar la depuración en la máquina virtual, en la página Configuración del asistente de Publicación web, seleccione Depurar como la configuración. Esto garantiza la disponibilidad de los símbolos de código durante la depuración.
En File Publish Options, seleccione Remove additional files at destination si el proyecto ya se había implementado anteriormente.
Después de publicar el proyecto, en el menú contextual de la máquina virtual en el Explorador de servidores, seleccione Asociar depurador...
Azure obtiene una lista de los procesos en la máquina virtual y los muestra en el cuadro de diálogo Asociar al proceso.
En el cuadro de diálogo Asociar al proceso, elija Seleccionar para limitar la lista de resultados de forma que solo se muestren los tipos de código que quiere depurar. Puede depurar código administrado de 32 o 64 bits, código nativo o ambos.
Seleccione los procesos que quiere depurar en la máquina virtual y después seleccione Asociar. Por ejemplo, puede seleccionar el proceso w3wp.exe si desea depurar una aplicación web en la máquina virtual. Consulte Depuración de uno o varios procesos en Visual Studio para obtener más información.
Contenido relacionado
Use Azure Diagnostics para registrar información detallada del código que se ejecuta dentro de los roles en Azure. Consulte Recopilación de datos de registro mediante Diagnósticos de Azure.
Para conocer otros escenarios de depuración remota, vea Depuración remota.