Depuración de un servicio de Azure Cloud Services (soporte extendido) en Visual Studio
Visual Studio ofrece diferentes opciones para depurar Azure Cloud Services (soporte extendido) y máquinas virtuales.
Prerrequisitos
- 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 el componente individual plantillas de proyecto y elemento de .NET Framework instaladas. Vea Modificación de Visual Studio.
- Una cuenta de Azure. Si no tiene una cuenta de Azure, active los beneficios de Azure de para los suscriptores de Visual Studio o regístrese para una prueba gratuita.
Depuración del servicio en la nube en el equipo local
Puede ahorrar tiempo y dinero mediante el emulador de Proceso de Azure para depurar el servicio en la nube en un equipo local. Al depurar un servicio localmente antes de implementarlo, puede mejorar la confiabilidad y el rendimiento sin pagar por el tiempo de proceso. Sin embargo, algunos errores pueden producirse solo cuando se ejecuta un servicio en la nube en Azure. Puede depurar estos errores si habilita la depuración remota al publicar el servicio y, a continuación, 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 controla el ciclo de vida de las instancias de rol y proporciona acceso a los recursos simulados, como el almacenamiento local. Al depurar o ejecutar el servicio desde Visual Studio, inicia automáticamente el emulador como una aplicación en segundo plano y, a continuación, implementa el servicio en el emulador. Puede usar el emulador para ver el servicio cuando se ejecuta en el entorno local. Puede ejecutar la versión completa o la versión rápida del emulador. Consulte Uso de Emulator Express para ejecutar y depurar un servicio en la nube localmente.
Para depurar el servicio en la nube en el equipo local
En la barra de menú, seleccione Depurar>Iniciar depuración para ejecutar su proyecto de Azure Cloud Services (soporte extendido). Como alternativa, puede presionar F5. Verá un mensaje que indica que se está iniciando el emulador de proceso. Cuando se inicia el emulador, el icono de la bandeja del sistema lo confirma.
Para mostrar la interfaz de usuario del emulador de proceso, abra el menú contextual del icono de Azure en el área de notificación y seleccione Mostrar interfaz de usuario del emulador de proceso.
El panel izquierdo de la interfaz de usuario muestra los servicios que se implementan actualmente en el emulador de proceso y las instancias de rol que ejecuta cada servicio. Puede elegir el servicio o los roles para mostrar el ciclo de vida, el registro y la información de diagnóstico en el panel derecho. Si coloca el foco en el margen superior de una ventana incluida, se expande para rellenar el panel 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, a continuación, reiniciar la depuración para que pueda depurar estas nuevas instancias del rol.
Nota
Al dejar de ejecutar o depurar el servicio, no se detiene el emulador de proceso local ni el emulador de almacenamiento. Debe detenerlos explícitamente en el área de notificación.
Depurar un servicio en la nube en Azure
Si habilita la depuración remota para un servicio en la nube mediante el procedimiento de esta sección, no presenta un rendimiento degradado ni incurre 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 ServiceDefinition.csdef para el puerto msvsmon predeterminado. Para 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 luego seleccione Publicar.
Seleccione el entorno de ensayo y la configuración de depuración.
Esto es sólo una guía. Puede optar por ejecutar los 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, que necesitará más adelante para iniciar sesión en esa máquina virtual.
Avance a la siguiente pantalla, revise la configuración y, cuando esté lista, haga clic en Publicar y espere a 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.
Desde el escritorio de la máquina virtual, ejecute el comando D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe. Asegúrese de ejecutar como administrador.
Acepte avisos 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 Azure Portal, abra el grupo de recursos y obtenga la dirección IP pública del servicio en la nube (soporte extendido).
Para adjuntar 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 compilaciones de lanzamiento están optimizadas y, por tanto, no se consideran parte de "Mi código".
Elija Depurar>Adjuntar al proceso (o presione Ctrl+Alt+P).
Mantenga el tipo de conexión en "Predeterminado".
Escriba el destino de conexión mediante 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 ServiceDefinition.csdef para el puerto msvsmon predeterminado. Para Visual Studio 2022, es 4026; para 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 compruebe el valor del atributo
osFamily
en el elementoServiceConfiguration
al publicar Cloud Services (soporte extendido). Para 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 sólo una guía. Puede optar por ejecutar los 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, que necesitará más adelante para iniciar sesión en esa máquina virtual.
Avance a la siguiente pantalla, revise la configuración y, cuando esté lista, haga clic en Publicar y espere a 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.
Desde 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 ejecutar como administrador.Acepte avisos 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 Azure Portal, abra el grupo de recursos y obtenga la dirección IP pública del servicio en la nube (soporte extendido).
Para adjuntar 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 lo tanto, no se consideran "My code".
Elija Depurar>Adjuntar al proceso (o presione Ctrl+Alt+P).
Mantenga el tipo de conexión en por defecto.
Escriba el destino de conexión mediante 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 se puede publicar un servicio en la nube en el que ningún rol tenga más de 25 instancias.
El depurador usa los puertos 30400 a 30424, 31400 a 31424 y 32400 a 32424. Si intenta usar cualquiera de estos puertos, no podrá publicar el servicio y uno de los siguientes mensajes de error aparecerá en el registro de actividad de Azure:
- Error al validar el archivo .cscfg en el archivo .csdef.
El intervalo de puertos reservado 'intervalo de puertos' para el punto de conexión
Microsoft.WindowsAzure.PlugIns.RemoteDebugger.Connector
del rol 'rol' se superpone con un intervalo o puerto ya definido. - Error de asignación. Vuelva a intentarlo más adelante, intente reducir el tamaño de la máquina virtual o el número de instancias de rol, o intente implementar en otra región.
- Error al validar el archivo .cscfg en el archivo .csdef.
El intervalo de puertos reservado 'intervalo de puertos' para el punto de conexión
Depuración de Azure App Service
Puede depurar programas que se ejecutan en Azure App Service mediante el cuadro de diálogo Asociar al proceso en Visual Studio.
Nota
Esto solo está disponible para Azure App Service a partir de Visual Studio 2022 17.1.
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
Debe iniciar 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 busque 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 ejecutan en Azure Virtual Machines mediante el Explorador de servidores en Visual Studio. Al habilitar la depuración remota en una máquina virtual de Azure, Azure instala la extensión de depuración remota en la máquina virtual. A continuación, puede asociarse a procesos en la máquina virtual y depurar como lo haría normalmente.
Nota
Las máquinas virtuales creadas a través del conjunto de Azure Resource Manager se pueden depurar remotamente mediante Cloud Explorer en Visual Studio 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.
Una vez finalizada la instalación de la extensión de depuración remota, abra el menú contextual de la máquina virtual y seleccione Asociar depurador...
Azure obtiene una lista de los procesos de 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 elegir el proceso de w3wp.exe si desea depurar una aplicación web en la máquina virtual. Consulte Depurar uno o varios procesos en Visual Studio y Arquitectura de Roles de Azure para obtener 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 independiente que admita escenarios de depuración y pruebas, y donde puede instalar programas de prueba y supervisión. Una manera de ejecutar estas pruebas es depurar de forma remota la aplicación en una máquina virtual.
Visual Studio ASP.NET proyectos ofrecen una opción para crear una máquina virtual útil que puede usar para las pruebas de aplicaciones. La máquina virtual incluye puntos de conexión necesarios habitualmente, como PowerShell, Escritorio remoto y WebDeploy.
Para crear de un proyecto web y una máquina virtual para la depuración
En Visual Studio, cree una 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 activada la casilla Crear recursos remotos . Seleccione Aceptar para continuar.
Aparece el cuadro de diálogo Crear máquina virtual en Azure.
Nota
Si aún no ha iniciado sesión, se le pedirá que inicie sesión en su cuenta de Azure.
Elija las distintas opciones de configuración de la máquina virtual y, a continuación, seleccione Aceptar. Consulte virtual Machines para obtener más información.
El nombre que escriba para el nombre DNS será el nombre de la máquina virtual.
Azure crea la máquina virtual y, a continuación, aprovisiona y configura los puntos de conexión, como Escritorio remoto e Implementación web.
Después de configurar completamente la máquina virtual, 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.
Registro de actividad de Azure
Publique su proyecto como se describe en Cómo: Desplegar un proyecto web mediante One-Click Publicar en Visual Studio. Dado que desea realizar la depuración en la máquina virtual, en la página Configuración del asistente para Publicación web, seleccione Depurar como configuración. Esto garantiza la disponibilidad de los símbolos de código durante la depuración.
En Opciones de publicación de archivos, seleccione Quitar archivos adicionales en el destino si el proyecto ya se implementó en un momento anterior.
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 de 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, selecciona Selecciona para limitar la lista de resultados y mostrar solo los tipos de código que deseas 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 elegir el proceso de w3wp.exe si desea depurar una aplicación web en la máquina virtual. Consulte Depurar 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 Azure Diagnostics.
Para conocer otros escenarios de depuración remota, vea Depuración remota.