Presentación de la depuración de viajes en el tiempo para Visual Studio Enterprise 2019

La vista previa de Time Travel Debugging (TTD) en Visual Studio Enterprise 2019 proporciona la capacidad de grabar una aplicación web que se ejecuta en una máquina virtual (VM) de Azure y luego reconstruir y reproducir con precisión la ruta de ejecución. TTD se integra con nuestra oferta de Snapshot Debugger y le permite rebobinar y reproducir cada línea de código las veces que lo desee, ayudándole a aislar e identificar problemas que solo pueden ocurrir en entornos de producción.



Este articulo en blog

El tipo más efectivo de depuración a menudo ocurre en lo que llamamos el "bucle interno". Mientras revisa y depura el código localmente, antes de pasar al control de versiones. Los problemas que encontramos durante el desarrollo del bucle interno suelen ser más fáciles de entender y diagnosticar porque son accesibles y repetibles.


Hoy, nos complace anunciar el lanzamiento de Time Travel Debugging (TTD) en Visual Studio Enterprise. Con TTD, le estamos dando el poder de grabar código ejecutado en producción y reproducir la ruta de ejecución dentro de Visual Studio. TTD también le brinda la capacidad de avanzar y retroceder en el tiempo como si estuviera realizando una depuración de "bucle interno" localmente. También obtienes acceso a importantes funciones de depuración como los locales y la pila de llamadas.


Los depuradores actuales generalmente le permiten detenerse en un punto de interrupción específico al detener todo el proceso y luego solo avanzar. Incluso con una herramienta de depuración más avanzada como IntelliTrace , puede grabar eventos y datos en momentos discretos en el tiempo. TTD tiene una ventaja significativa sobre las instantáneas, el registro o los archivos de volcado por caída, ya que a estos métodos generalmente les faltan los detalles exactos de la ruta de ejecución que condujo a la falla o error final.


¿Qué es la depuración del viaje en el tiempo?

Time Travel Debugging (TTD) es una solución de depuración inversa que le permite registrar la ejecución de código en una aplicación o proceso y reproducirlo tanto hacia adelante como hacia atrás. TTD mejora la depuración ya que puede retroceder en el tiempo para comprender mejor las condiciones que conducen a un error específico. Además, puede reproducirlo varias veces para comprender la mejor manera de solucionar el problema. La tecnología TTD se introdujo recientemente en una versión preliminar de WinDbg para escenarios de código nativo .


Hemos extendido el depurador de instantáneas con TTD para que pueda grabar sus aplicaciones a medida que se ejecutan. Esa grabación se puede reproducir en Visual Studio 2019 Enterprise, donde puede rebobinar y reproducir cada línea de código tantas veces como desee. TTD registra en el hilo que coincide con las condiciones del punto de ajuste y generalmente se ejecutará hasta el final del método. Si hay una "espera" después del punto de ajuste pero antes del final del método, dejaremos de grabar donde ocurre la espera. Esta característica estará en vista previa para el lanzamiento de Visual Studio 2019 con una licencia de lanzamiento en vivo. Planeamos agregar más escenarios TTD en futuras actualizaciones.


Comenzando con TTD

La vista previa de Time Travel Debugging se puede habilitar en la última versión de Visual Studio Enterprise 2019 para máquinas virtuales de Azure en el sistema operativo Windows que ejecuta ASP.NET (4.8+) .


Después de instalar la última versión de Visual Studio Enterprise, complete los siguientes pasos:


1. Abra el proyecto en el que desea depurar el viaje en el tiempo: asegúrese de tener la misma versión del código fuente que se publica en su máquina virtual de Azure.


2. Elija Debug> Attach Snapshot Debugger y seleccione la máquina virtual de Azure en la que se implementa su proyecto junto con una cuenta de almacenamiento de Azure. Deberá instalar la extensión del sitio Snapshot Debugger la primera vez que intente adjuntar.


3. Seleccione la opción Depuración de viaje en el tiempo y luego haga clic en Adjuntar . Una vez que Visual Studio esté en modo Snapshot Debugger, podrá grabar usando TTD.



4. Cree un punto de ajuste y configúrelo para habilitar la depuración del viaje en el tiempo. Haga clic en Inicio \ Actualizar colección .



5. Una vez que se haya recopilado la instantánea, haga clic en Ver instantánea y puede usar la barra de comandos para avanzar y retroceder dentro del método grabado.



Limitaciones de vista previa de TTD

Durante la etapa de vista previa inicial de TTD, admitiremos aplicaciones web AMD64 que se ejecutan en una máquina virtual (VM) de Azure. Esperamos que la grabación agregue una sobrecarga significativa a su proceso en ejecución, ralentizándola según el tamaño del proceso y la cantidad de subprocesos activos. También anticipamos experiencias de depuración degradadas en algunos de los siguientes escenarios:


  • Durante una fase de compactación GC.
  • Paso a paso a través de un método optimizado, por ejemplo, cuando ingresa a un método que no contiene un punto de ajuste.
  • Si su aplicación carga o descarga internamente dominios de aplicaciones.
  • La grabación solo se produce en el subproceso que se activó por el punto de conexión, el código que posteriormente afecta a subprocesos alternativos también se degradará.

Tenga en cuenta: tampoco registraremos las cadenas de causalidad asíncronas.


Durante las pruebas de vista previa, descubrimos que los tamaños de archivo TTD variaban desde varios cientos de megabytes hasta varios gigabytes, dependiendo de cuánto dure su sesión y cuánto tiempo se ejecute la aplicación web. Sin embargo, los archivos creados por TTD se limpiarán una vez que finalice la sesión del depurador de instantáneas y se inicie el reciclaje del grupo de aplicaciones. Para nuestra versión preliminar también recomendamos usar una VM con un mínimo de 8GB de RAM.


Prueba TTD ahora!

Estamos increíblemente entusiasmados acerca de cómo esta función de vista previa puede ayudarlo a mejorar sus experiencias de depuración en Azure, pero esto es solo el comienzo. Nuestro equipo continúa diseñando y construyendo capacidades TTD adicionales que planeamos agregar en las próximas versiones de Visual Studio.


Contamos con sus comentarios a través de nuestra Comunidad de desarrolladores y el Centro de comentarios, puede ayudarnos a priorizar qué mejoras realizar porque realmente valoramos todas las respuestas que proporciona.


Avatar
Mark Downie

Gerente de programa, Visual Studio Production Diagnostics

Source: https://habr.com/ru/post/448778/


All Articles