La versión de vista previa de Time Travel Debugging (TTD) en Visual Studio Enterprise 2019 le permite registrar la ejecución de una aplicación web que se ejecuta en una máquina virtual de Azure y luego restaurar y reproducir con precisión el algoritmo. TTD se integra con nuestra oferta de
Snapshot Debugger y le permite rebobinar y reproducir cada línea de código tantas veces como desee, lo que ayuda a identificar y predecir problemas que solo pueden ocurrir en entornos de combate.
La imagen está tomada de la página del juego Quantum Break (18+) en Microsoft Store. Por cierto, hay un descuento del 75% ($ 10). Si alguien quería pero no pudo encontrar la oportunidad, lo recomendamos.
El tipo más eficiente de depuración a menudo ocurre en el llamado "bucle interno". Cuando ve y depura el código localmente antes de pasar al control de versiones. Los problemas que enfrentamos durante el desarrollo del ciclo 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 brindamos la oportunidad de escribir código ejecutado en un entorno de 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 haciendo una depuración local del "bucle interno". También obtiene acceso a importantes funciones de depuración, como los locales y la pila de llamadas.
Los depuradores modernos generalmente le permiten detenerse en un determinado punto (punto de interrupción), interrumpiendo todo el proceso y solo luego avanzar. Incluso con
herramientas de depuración más
avanzadas como IntelliTrace , registra eventos y datos en puntos discretos en el tiempo. TTD tiene una ventaja significativa sobre las instantáneas, el registro o los archivos de volcado por caída, porque estos métodos generalmente no contienen información precisa sobre la ruta de ejecución que condujo a la falla o error final.
¿Qué es la depuración de viajes 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 de un lado a otro. TTD mejora la depuración, ya que puede retroceder en el tiempo para comprender mejor las condiciones que conducen a un error particular. Además, puede jugarlo varias veces para descubrir la mejor manera de solucionar el problema.
La tecnología TTD se introdujo recientemente en la versión de vista previa de WinDbg para scripts con código nativo .
Hemos ampliado Snapshot Debugger con TTD para que pueda grabar aplicaciones mientras se ejecutan. Este registro se puede reproducir en Visual Studio Enterprise 2019, donde puede rebobinar y reproducir cada línea de código tantas veces como desee. TTD escribe en un subproceso que cumple las condiciones de punto de conexión y generalmente se ejecuta hasta el final del método. Pero si antes del final del método después del punto de referencia hay "espera", la grabación se detendrá. Esta característica estará en la vista previa para el lanzamiento de Visual Studio 2019 con una licencia válida. Planeamos agregar más scripts TTD en futuras actualizaciones.
Comenzando con TTD
Se puede habilitar una vista previa de Time Travel Debugging en la última versión de Visual Studio Enterprise 2019 para máquinas virtuales de Azure que ejecutan Windows con ASP.NET (4.8+).
Después de instalar la última versión de Visual Studio Enterprise, complete los siguientes pasos:
1. Abra el proyecto que requiere Time Travel Debug: asegúrese de tener la misma versión del código fuente que se publica en la máquina virtual de Azure.
2. Seleccione
Debug> Attach Snapshot Debugger y seleccione la máquina virtual de Azure en la que se implementa su proyecto junto con la cuenta de almacenamiento de Azure. La primera vez que intente conectarse, deberá instalar la extensión del sitio Snapshot Debugger.
3. Seleccione la opción
Depuración de viaje en el
tiempo y haga clic en el botón
Adjuntar . Una vez que Visual Studio ingrese al modo de depurador de instantáneas, podrá grabar usando TTD.

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

5. Una vez que se haya compilado su 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 TTDEn la etapa de vista previa inicial de TTD, admitiremos aplicaciones web AMD64 que se ejecutan en una máquina virtual de Azure. Esperamos que la entrada 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 esperamos la degradación de la depuración en algunos de los siguientes escenarios:
- Durante la fase de compactación del GC.
- Pasar por un método optimizado, por ejemplo, cuando ingresa un método que no contiene un punto de ajuste.
- Si su aplicación descarga o descarga internamente dominios de aplicación.
- La grabación se produce solo en la secuencia que fue llamada por snappoint. El código que posteriormente afecta a hilos alternativos también se degradará.
Tenga en cuenta: tampoco registraremos relaciones asíncronas de causa y efecto.
Durante las pruebas preliminares, encontramos que el tamaño del archivo TTD oscilaba entre unos cientos de megabytes y varios gigabytes, dependiendo de la duración de la sesión y la duración de la aplicación web. Sin embargo, los archivos creados por TTD se limpiarán después de que se complete la sesión del depurador de instantáneas y se reinicie el grupo de aplicaciones. Para nuestra versión preliminar, también recomendamos utilizar una máquina virtual con al menos 8 GB de RAM.
¡Prueba TTD ahora!
Estamos increíblemente entusiasmados acerca de cómo esta función de vista previa puede ayudarlo a mejorar la depuración en Azure, pero esto es solo el comienzo. Nuestro equipo continúa desarrollando y creando características TTD adicionales que planeamos agregar en las próximas versiones de Visual Studio.
Esperamos sus comentarios!