Compartir a través de


Depuración de aplicaciones en directo de ASP.NET de Azure mediante el Snapshot Debugger

Snapshot Debugger toma una instantánea de las aplicaciones en producción cuando se ejecuta el código que le interesa. Para indicar al depurador que tome una instantánea, establezca puntos de acoplamiento y puntos de registro en el código. El depurador le permite ver exactamente qué salió mal, sin afectar el tráfico de la aplicación de producción. Snapshot Debugger puede ayudarle a reducir drásticamente el tiempo necesario para resolver los problemas que se producen en entornos de producción.

Los puntos de instantánea y los puntos de registro son similares a los puntos de interrupción, pero a diferencia de estos últimos, los puntos de instantánea no detienen la aplicación cuando se alcanzan dichos puntos. Típicamente, la captura de una instantánea en un snappoint tarda entre 10 y 20 milisegundos.

En este tutorial, aprenderá lo siguiente:

  • Iniciar el depurador de instantáneas
  • Establecer un punto de instantáneo y ver una imagen instantánea
  • Establecimiento de un punto de registro

Prerrequisitos

  • Snapshot Debugger solo está disponible a partir de Visual Studio 2017 Enterprise versión 15.5 o posterior con la carga de trabajo de desarrollo de Azure. (En la pestaña Componentes individuales, la encontrará en Depuración y pruebas>.Depurador de instantáneas).

    Si aún no está instalado, instale Visual Studio 2019. Si va a actualizar desde una instalación anterior de Visual Studio, ejecute el Instalador de Visual Studio y compruebe el componente Snapshot Debugger en la carga de trabajo de desarrollo web y ASP.NET.

  • Plan básico o superior de Azure App Service.

  • La recopilación de instantáneas está disponible para las siguientes aplicaciones web que se ejecutan en Azure App Service:

    • ASP.NET aplicaciones que se ejecutan en .NET Framework 4.6.1 o posterior.
    • Aplicaciones de ASP.NET Core que se ejecutan en .NET Core 2.0 o versiones posteriores en Windows.

Abra el proyecto e inicie snapshot Debugger.

  1. Abra el proyecto que desea depurar con capturas.

    Importante

    Para realizar la depuración de instantáneas, debe abrir la misma versión del código fuente que ha sido publicado en Azure App Service.

  2. Elija >. Seleccione el Azure App Service al que está implementado su proyecto y una cuenta de Azure Storage y, a continuación, haga clic en Adjuntar. Snapshot Debugger también admite Azure Kubernetes Service y Azure Virtual Machines (VM) y Virtual Machine Scale Sets.

    Iniciar el depurador de instantáneas desde el menú Depurar

    Selección del recurso de Azure

    Importante

    La primera vez que seleccione Asociar depurador de instantáneas, se le pedirá que instale la extensión de sitio Depurador de instantáneas en el Azure App Service. Esta instalación requiere un reinicio de Azure App Service.

    Nota:

    (Visual Studio 2019, versión 16.2 y posteriores) Snapshot Debugger ha habilitado la compatibilidad con la nube de Azure. Asegúrese de que tanto el recurso de Azure como la cuenta de Azure Storage que seleccione estén en la misma nube. Póngase en contacto con el administrador de Azure si tiene preguntas sobre las configuraciones de cumplimiento de Azure de su empresa.

    Visual Studio ahora está en modo de depuración de instantáneas. Modo de depuración de instantáneas

    La ventana Módulos muestra cuándo se han cargado todos los módulos para Azure App Service (elija Depurar > módulos de Windows > para abrir esta ventana).

    Comprobar la ventana Módulos

Establecer un punto de ajuste

  1. En el editor de código, haga clic en el margen izquierdo junto a una línea de código de su interés para establecer un punto de interrupción. Asegúrese de que es código que sabe que se ejecutará.

    Establecer un punto de encaje

  2. Haga clic en Iniciar colección para activar el punto de acoplamiento.

    Activar el punto de anclaje

    Sugerencia

    No puede avanzar paso a paso al ver una instantánea, pero puede colocar varios puntos de interrupción en su código para seguir la ejecución en diferentes líneas de código. Si tiene múltiples puntos de acoplamiento en el código, Snapshot Debugger se asegura de que las instantáneas correspondientes sean de la misma sesión del usuario final. Snapshot Debugger hace esto incluso si hay muchos usuarios que llegan a la aplicación.

Tomar una instantánea

Una vez establecido un punto de captura, puede generar manualmente una instantánea si va a la vista del navegador de su sitio web y ejecuta la línea de código marcada, o bien esperar a que los usuarios generen una a partir de su interacción con el sitio.

Inspección de los datos de instantánea

  1. Cuando se alcanza el punto de acoplamiento, aparece una instantánea en la ventana Herramientas de diagnóstico. Para abrir esta ventana, elija Depurar > Windows > Mostrar herramientas de diagnóstico.

    Abrir un punto de anclaje

  2. Haga doble clic en el punto de captura para abrir la instantánea en el editor de código.

    Revisar los datos de la instantánea

    Desde esta vista, puede mantener el puntero sobre las variables para ver información sobre datos, usar las ventanas Variables locales, Observadores y Pila de llamadas, y también evaluar expresiones.

    El propio sitio web todavía está activo y los usuarios finales no se ven afectados. Solo se captura una instantánea por punto de captura de forma predeterminada: después de capturar una instantánea, el punto de captura se desactiva. Si desea capturar otra instantánea en el snappoint, puede habilitarlo nuevamente haciendo clic en Actualizar colección.

También puede agregar más puntos de anclaje a la aplicación y activarlos con el botón Actualizar recopilación.

¿Necesita ayuda? Consulte las páginas Solución de problemas y problemas conocidos y Preguntas frecuentes sobre la depuración de instantáneas.

Establecimiento de un punto de acoplamiento condicional

Si es difícil volver a crear un estado determinado en la aplicación, considere la posibilidad de usar un punto de acoplamiento condicional. Los puntos de acoplamiento condicionales le ayudan a controlar cuándo tomar una instantánea, como cuando una variable contiene un valor determinado que desea inspeccionar. Puede establecer condiciones mediante expresiones, filtros o recuentos de aciertos.

Para crear un punto de referencia condicional

  1. Haga clic con el botón derecho en un icono de punto de acoplamiento (la esfera hueca) y elija Configuración.

    Elegir configuración

  2. En la ventana de configuración del punto de acoplamiento, escriba una expresión.

    Escribir una expresión

    En la ilustración anterior, la captura solo se toma para el punto de captura cuando visitor.FirstName == "Dan".

Establecimiento de un punto de registro

Además de tomar una instantánea cuando se alcanza un punto de interrupción, también puede configurar un punto de interrupción para registrar un mensaje (es decir, crear un punto de registro). Puede establecer puntos de registro sin tener que volver a implementar la aplicación. Los puntos de registro se ejecutan virtualmente y no producen ningún impacto o efectos secundarios en la aplicación en ejecución.

Para crear un punto de registro

  1. Haga clic con el botón derecho en un icono de punto de acoplamiento (el hexágono azul) y elija Configuración.

  2. En la ventana de configuración del punto de acoplamiento, seleccione Acciones.

    Creación de un punto de registro

  3. En el campo Mensaje , puede escribir el nuevo mensaje de registro que desea registrar. También puede evaluar variables en su mensaje de registro colocándolas entre llaves.

    Si elige Enviar a la ventana de salida, cuando se alcanza el punto de registro, el mensaje aparece en la ventana Herramientas de diagnóstico.

    Datos de punto de registro en la ventana Herramientas de diagnóstico

    Si elige Enviar al registro de aplicaciones, cuando se alcanza el punto de registro, el mensaje aparece en cualquier lugar donde pueda ver mensajes de System.Diagnostics.Trace (o de ILogger en .NET Core), como App Insights.

En este tutorial, ha aprendido a usar Snapshot Debugger para App Services. Es posible que quiera leer más detalles sobre esta característica.