Présentation du débogage de voyage dans le temps pour Visual Studio Enterprise 2019

L'aperçu TTD (Time Travel Debugging) dans Visual Studio Enterprise 2019 offre la possibilité d'enregistrer une application Web exécutée sur une machine virtuelle Azure (VM), puis de reconstruire et de rejouer avec précision le chemin d'exécution. TTD s'intègre à notre offre Snapshot Debugger et vous permet de rembobiner et de relire chaque ligne de code autant de fois que vous le souhaitez, ce qui vous aide à isoler et à identifier les problèmes qui ne peuvent se produire que dans les environnements de production.



Cet article dans le blog

Le type de débogage le plus efficace se produit souvent dans ce que nous appelons la «boucle intérieure». Pendant que vous êtes en train de revoir et de déboguer le code localement, avant d'avoir poussé vers le contrôle de version. Les problèmes que nous rencontrons lors du développement de la boucle interne sont généralement plus faciles à comprendre et à diagnostiquer car ils sont accessibles et reproductibles.


Aujourd'hui, nous sommes ravis d'annoncer la sortie du Time Travel Debugging (TTD) dans Visual Studio Enterprise. Avec TTD, nous vous donnons le pouvoir d'enregistrer du code exécuté en production et de rejouer le chemin d'exécution dans Visual Studio. TTD vous donne également la possibilité d'avancer et de reculer dans le temps comme si vous effectuiez un débogage de «boucle interne» localement. 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 d'aujourd'hui vous permettent généralement de vous arrêter à un point d'arrêt spécifique en arrêtant l'ensemble du processus, puis de ne faire que progresser. Même avec un outil de débogage plus avancé comme IntelliTrace , vous enregistrez des événements et des données à des moments discrets. TTD a un avantage significatif sur les instantanés, les fichiers de journalisation ou de vidage sur incident, car ces méthodes manquent généralement les détails exacts du chemin d'exécution qui a conduit à l'échec ou au bug final.


Qu'est-ce que le débogage de voyage 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 relire à la fois en avant et en arrière. TTD améliore le débogage car vous pouvez remonter dans le temps pour mieux comprendre les conditions qui conduisent à un bogue spécifique. De plus, vous pouvez le rejouer plusieurs fois pour comprendre la meilleure façon de résoudre le problème. La technologie TTD a récemment été introduite dans une version préliminaire de WinDbg pour les scénarios de code natif .


Nous avons étendu le Snapshot Debugger avec TTD pour vous permettre d'enregistrer vos applications pendant leur exécution. Cet enregistrement peut ensuite être lu dans Visual Studio 2019 Enterprise où vous pouvez rembobiner et rejouer chaque ligne de code autant de fois que vous le souhaitez. Les enregistrements TTD sur le thread qui correspondent aux conditions de snappoint et s'exécutent généralement jusqu'à la fin de la méthode. S'il y a une «attente» après le snappoint mais avant la fin de la méthode, nous arrêterons d'enregistrer où l'attente se produit. Cette fonctionnalité sera en avant-première pour la sortie de Visual Studio 2019 avec une licence go live. Nous prévoyons d'ajouter plus de scénarios 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 sur le système d'exploitation Windows exécutant ASP.NET (4.8+) .


Après avoir installé la dernière version de Visual Studio Enterprise, procédez comme suit:


1. Ouvrez le projet que vous souhaitez dans Time Travel Debug - assurez-vous que vous disposez de la même version de code source qui est publiée sur votre machine virtuelle Azure.


2. Choisissez Debug> Attach Snapshot Debugger et sélectionnez la machine virtuelle Azure sur laquelle votre projet est déployé avec un compte de stockage Azure. Vous devrez installer l'extension de site Snapshot Debugger lors de la première tentative de connexion.


3. Sélectionnez l'option Débogage de voyage dans le temps , puis cliquez sur Attacher . Une fois que Visual Studio est en mode débogueur d'instantané, il sera capable d'enregistrer en utilisant TTD.



4. Créez un 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 que votre instantané a été collecté, cliquez sur Afficher l'instantané et vous pouvez utiliser la barre de commandes pour avancer et reculer dans la méthode enregistrée.



Limitations de l'aperçu TTD

Au cours de la phase de prévisualisation initiale de TTD, nous prendrons en charge les applications Web AMD64 s'exécutant sur une machine virtuelle Azure (VM). Nous nous attendons à ce que l'enregistrement 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 des expériences de débogage dans certains des scénarios suivants: -


  • Pendant une phase de compactage GC.
  • Passer par une méthode optimisée, par exemple lorsque vous entrez dans une méthode qui ne contient pas de snappoint.
  • Si votre application charge ou décharge en interne des domaines d'application.
  • L'enregistrement ne se produit que sur le thread qui a été déclenché par le snappoint, le code qui affecte ensuite les threads alternatifs sera également dégradé.

Veuillez noter: nous n'enregistrerons pas non plus les chaînes de causalité asynchrones.


Lors des tests de prévisualisation, nous avons constaté que la taille des fichiers TTD variait de plusieurs centaines de mégaoctets à plusieurs gigaoctets selon la durée de votre session et la durée d'exécution de l'application Web. Cependant, les fichiers créés par TTD seront nettoyés une fois la session Snapshot Debugger terminée et un recyclage du pool d'applications est lancé. Pour notre version préliminaire, nous vous recommandons également d'utiliser une machine virtuelle avec un minimum de 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 vos expériences de débogage dans Azure, mais ce n'est que le début. Notre équipe continue de concevoir et de créer des capacités TTD supplémentaires que nous prévoyons d'ajouter dans les prochaines versions de Visual Studio.


Nous comptons sur vos commentaires via notre communauté de développeurs et le centre de commentaires, vous pouvez nous aider à hiérarchiser les améliorations à apporter, car nous apprécions vraiment toutes les réponses que vous fournissez.


Avatar
Mark downie

Gestionnaire de programme, Visual Studio Production Diagnostics

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


All Articles