La version d'aperçu de Time Travel Debugging (TTD) dans Visual Studio Enterprise 2019 vous permet d'enregistrer l'exécution d'une application Web exécutée sur une machine virtuelle Azure, puis de restaurer et reproduire avec précision l'algorithme. TTD s'intègre à notre offre
Snapshot Debugger et vous permet de rembobiner et de lire chaque ligne de code autant de fois que vous le souhaitez, ce qui permet d'identifier et de prévoir les problèmes qui ne peuvent se produire que dans des environnements de combat.
L'image est prise à partir de la page de jeu Quantum Break (18+) dans le Microsoft Store. Soit dit en passant, il y a une réduction de 75% (10 $). Si quelqu'un voulait mais n'a pas trouvé l'opportunité, nous le recommandons.
Le type de débogage le plus efficace se produit souvent dans la soi-disant «boucle interne». Lorsque vous affichez et déboguez le code localement avant de passer au contrôle de version. Les problèmes auxquels nous sommes confrontés lors du développement du cycle interne sont généralement plus faciles à comprendre et à diagnostiquer car ils sont accessibles et reproductibles.

Aujourd'hui, nous sommes heureux d'annoncer la sortie de Time Travel Debugging (TTD) dans Visual Studio Enterprise. Avec TTD, nous vous offrons la possibilité d'écrire du code exécuté dans un environnement de production et de reproduire le chemin d'exécution dans Visual Studio. TTD vous donne également la possibilité de vous déplacer d'avant en arrière dans le temps, comme si vous faisiez un débogage local de la «boucle intérieure». Vous avez également accès à des fonctionnalités de débogage importantes telles que les sections locales et la pile d'appels.
Les débogueurs modernes vous permettent généralement de vous arrêter à un certain point (point d'arrêt), interrompant tout le processus, puis d'avancer. Même avec
des outils de débogage plus
avancés tels qu'IntelliTrace , vous enregistrez des événements et des données à des moments discrets. TTD a un avantage significatif sur les instantanés, la journalisation ou les fichiers de vidage sur incident, car ces méthodes ne contiennent généralement pas d'informations précises sur le chemin d'exécution qui a conduit à l'échec ou à l'erreur finale.
Qu'est-ce que le débogage dans le temps?
Le débogage dans le temps (TTD) est une solution de débogage inverse qui vous permet d'enregistrer l'exécution de code dans une application ou un processus et de le lire dans les deux sens. TTD améliore le débogage, car vous pouvez remonter dans le temps pour mieux comprendre les conditions qui conduisent à une erreur particulière. De plus, vous pouvez y jouer plusieurs fois pour déterminer la meilleure façon de résoudre le problème.
La technologie TTD a été récemment introduite dans la version préliminaire de WinDbg pour les scripts avec du code natif .
Nous avons développé Snapshot Debugger avec TTD afin que vous puissiez enregistrer les applications pendant leur exécution. Cet enregistrement peut ensuite être lu dans Visual Studio Enterprise 2019, où vous pouvez rembobiner et lire chaque ligne de code autant de fois que vous le souhaitez. TTD écrit sur un thread qui remplit les conditions de snappoint et est généralement exécuté jusqu'à la fin de la méthode. Mais si avant la fin de la méthode après snappoint il y a «attente», l'enregistrement sera arrêté. Cette fonctionnalité sera dans l'aperçu de la version de Visual Studio 2019 avec une licence valide. Nous prévoyons d'ajouter plus de scripts TTD dans les futures mises à jour.
Débuter avec TTD
L'aperçu du débogage dans le temps peut être activé dans la dernière version de Visual Studio Enterprise 2019 pour les machines virtuelles Azure exécutant Windows avec ASP.NET (4.8+).
Après avoir installé la dernière version de Visual Studio Enterprise, procédez comme suit:
1. Ouvrez le projet requis par Time Travel Debug - assurez-vous que vous disposez de la même version du code source publiée sur la machine virtuelle Azure.
2. Sélectionnez
Debug> Attach Snapshot Debugger et sélectionnez la machine virtuelle Azure sur laquelle votre projet est déployé avec le compte de stockage Azure. La première fois que vous essayez de vous connecter, vous devrez installer l'extension de site Snapshot Debugger.
3. Sélectionnez l'option
Débogage dans le
temps et cliquez sur le bouton
Attacher . Une fois que Visual Studio entre en mode Snapshot Debugger, il pourra enregistrer à l'aide de TTD.

4. Créez snappoint et configurez-le pour activer le débogage de voyage dans le temps. Cliquez sur
Démarrer \ Mettre à jour la collection .

5. Une fois votre instantané compilé, cliquez sur
Afficher l'instantané et vous pouvez utiliser la barre de commandes pour aller et venir dans la méthode enregistrée.
Limitations de l'aperçu TTDÀ l'étape de prévisualisation initiale de TTD, nous prendrons en charge les applications Web AMD64 s'exécutant sur une machine virtuelle Azure. Nous nous attendons à ce que l'entrée ajoute une surcharge importante à votre processus en cours d'exécution, le ralentissant en fonction de la taille du processus et du nombre de threads actifs. Nous prévoyons également une dégradation du débogage dans certains des scénarios suivants:
- Pendant la phase de compactage du GC.
- Passer par une méthode optimisée, par exemple, lorsque vous entrez une méthode qui ne contient pas de snappoint.
- Si votre application télécharge ou décharge en interne des domaines d'application.
- L'enregistrement se produit uniquement dans le flux appelé par snappoint. Le code qui affecte ensuite les threads alternatifs sera également dégradé.
Remarque: nous n'enregistrerons pas non plus les relations de cause à effet asynchrones.
Lors des tests préliminaires, nous avons constaté que la taille du fichier TTD variait de quelques centaines de mégaoctets à plusieurs gigaoctets, selon la durée de la session et la durée de l'application Web. Cependant, les fichiers créés par TTD seront nettoyés une fois la session de débogage de capture instantanée terminée et le pool d'applications redémarré. Pour notre version préliminaire, nous vous recommandons également d'utiliser une machine virtuelle avec au moins 8 Go de RAM.
Essayez TTD maintenant!
Nous sommes extrêmement enthousiasmés par la façon dont cette fonctionnalité d'aperçu peut vous aider à améliorer le débogage dans Azure, mais ce n'est que le début. Notre équipe continue de développer et de créer des fonctionnalités TTD supplémentaires que nous prévoyons d'ajouter dans les prochaines versions de Visual Studio.
Nous nous réjouissons de vos commentaires!