Débogueur hors processus pour C ++ dans Visual Studio 2019

Visual Studio 2019 Preview 1 introduit un débogueur amélioré pour C ++ qui utilise un processus 64 bits externe pour héberger ses composants gourmands en ressources. Si vous aviez précédemment des problèmes de mémoire lors du débogage des applications C ++, ces problèmes devraient maintenant être largement résolus avec Visual Studio 2019.

Vous trouverez ci-dessous un exemple pratique de débogage de Gears of War 4.



Contexte


En donnant des commentaires, les développeurs C ++ ont souvent parlé des problèmes associés à une utilisation élevée de la mémoire lors du débogage d'applications C ++ complexes. Une grande consommation de mémoire est associée à une énorme quantité de données de symboles, que le débogueur doit charger et afficher dans la fenêtre du débogueur. De plus, la quantité de ces informations augmente constamment pendant le travail. En fin de compte, le processus Visual Studio peut échouer en raison d'une mémoire insuffisante.

Nous avons apporté des améliorations significatives dans Visual Studio 2017 pour atténuer ce problème. Par exemple, la mise à jour 15.6 a introduit l'optimisation de la mémoire pour / Debug: fastlink, ce qui a entraîné une réduction de 30% de la consommation de mémoire par le débogueur. Puisque nous nous efforçons d'éviter ce problème dans Visual Studio 2019, nous avons déplacé les composants gourmands en mémoire vers un processus 64 bits distinct.

Étude de cas: débogage de Gears of War 4


Nous avons travaillé en étroite collaboration avec des équipes de partenaires internes et externes pour nous assurer que les modifications que nous avons apportées au débogueur étaient validées et validées dans de grandes applications réelles. Ci-dessous, nous avons dupliqué la vidéo du cdpv. Il montre une comparaison parallèle de l'utilisation de la mémoire entre Visual Studio 2017 et Visual Studio 2019 lors du débogage de Gears of War 4 développé par The Coalition. L'utilisation de la mémoire de Visual Studio 2017 est augmentée à 1,3 Go après quelques minutes d'affichage du code de jeu et de vérification des variables. Visual Studio 2019 offre une bien meilleure utilisation de la mémoire dans le même scénario: la quantité de mémoire utilisée reste d'environ 285 Mo, car les données de symboles sont stockées dans un flux de travail de débogueur 64 bits.



Tout fonctionne désormais beaucoup mieux en runtime également.

Scénarios non pris en charge et certains problèmes connus


  • Cette fonctionnalité n'est pas prise en charge sur Windows 32 bits.
  • Les symboles des modules C ++ / CLI sont toujours en cours de chargement
  • Les modules complémentaires C ++ Expression Evaluator obsolètes ( ici un exemple) ne sont pas pris en charge dans ce mode.

Si vous devez continuer à utiliser le débogueur en cours, vous pouvez désactiver la fonctionnalité en accédant à l'onglet «Débogage» dans «Outils» -> «Options» et en décochant «Charger les symboles de débogage dans un processus externe (natif uniquement)».



Les gars de la communauté des développeurs Microsoft @msdevru, le canal de la communauté des développeurs Microsoft pour les développeurs et tous ceux qui s'intéressent aux nouvelles technologies nous ont aidés à préparer cet article.

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


All Articles