Partager via


Utiliser des mappages de code pour déboguer vos applications

Les mappages de code dans Visual Studio peuvent vous aider à éviter de perdre des bases de code volumineuses, du code inconnu ou du code hérité. Par exemple, lorsque vous déboguez, vous devrez peut-être examiner le code dans de nombreux fichiers et projets. Utilisez des mappages de code pour parcourir des éléments de code et comprendre les relations entre elles. De cette façon, vous n’avez pas besoin de suivre ce code dans votre tête, ou de dessiner un diagramme distinct. Par conséquent, lorsque votre travail est interrompu, les mappages de code permettent d’actualiser votre mémoire sur le code sur lequel vous travaillez.

Mappage de code - Mapper les relations dans le code

Une flèche verte indique où votre curseur apparaît dans l’éditeur

Pour plus d’informations sur les commandes et les actions que vous pouvez utiliser lors de l’utilisation de mappages de code, consultez Parcourir et réorganiser les mappages de code.

En savoir plus sur le débogage dans Visual Studio avec l’outil Débogueur.

Note

Pour créer et modifier des mappages de code, vous avez besoin de Visual Studio Enterprise Edition. Dans les éditions Visual Studio Community et Professional, vous pouvez ouvrir des diagrammes générés dans l’édition Entreprise, mais vous ne pouvez pas les modifier.

Comprendre le problème

Supposons qu’il y ait un bogue dans un programme de dessin sur lequel vous travaillez. Pour reproduire le bogue, vous ouvrez la solution dans Visual Studio et appuyez sur F5 pour démarrer le débogage.

Lorsque vous dessinez une ligne et choisissez Annuler mon dernier trait, rien ne se passe jusqu’à ce que vous dessiniez la ligne suivante.

Mappage de code - Bug reproductible

Vous commencez donc à étudier en recherchant la Undo méthode. Vous le trouvez dans la PaintCanvas classe.

Mappage de code - Rechercher du code

Démarrer le mappage du code

Commencez maintenant à mapper la undo méthode et ses relations. À partir de l’éditeur de code, vous ajoutez la undo méthode et les champs qu’il référence à un nouveau mappage de code. Lorsque vous créez une carte, il peut prendre un certain temps pour indexer le code. Cela aide les opérations ultérieures à s’exécuter plus rapidement.

Mappage de code - Afficher la méthode et les champs associés

Conseil / Astuce

La mise en surbrillance verte affiche les derniers éléments ajoutés à la carte. La flèche verte affiche la position de votre curseur dans le code. Les flèches entre les éléments représentent différentes relations. Vous pouvez obtenir plus d’informations sur les éléments de la carte en déplaçant la souris dessus et en examinant leurs info-bulles.

Carte du code - Afficher les info-bulles

Pour afficher la définition de code de chaque champ, double-cliquez sur le champ sur la carte ou sélectionnez le champ, puis appuyez sur F12. La flèche verte se déplace entre les éléments de la carte. Votre curseur dans l’éditeur de code se déplace également automatiquement.

Capture d’écran d’une fenêtre de mappage de code avec le champ d’historique sélectionné et une fenêtre d’éditeur de code où toutes les instances de l’historique sont mises en surbrillance.

Capture d’écran d’une fenêtre de mappage de code avec le champ paintObjects sélectionné et une fenêtre d’éditeur de code où toutes les instances de paintObjects sont mises en surbrillance.

Conseil / Astuce

Vous pouvez également déplacer la flèche verte sur la carte en déplaçant votre curseur dans l’éditeur de code.

Comprendre les relations entre des éléments de code

Vous souhaitez maintenant savoir quel autre code interagit avec les champs history et paintObjects. Vous pouvez ajouter toutes les méthodes qui référencent ces champs à la carte. Vous pouvez le faire à partir de la carte ou de l’éditeur de code.

Mappage de code - Rechercher toutes les références

Ouvrir un mappage de code à partir de l’éditeur de code

Note

Si vous ajoutez des éléments à partir d’un projet partagé entre plusieurs applications, comme Windows Phone ou Windows Store, ces éléments apparaissent toujours avec le projet d’application actuellement actif sur la carte. Par conséquent, si vous modifiez le contexte en un autre projet d’application, le contexte de la carte change également pour les éléments nouvellement ajoutés à partir du projet partagé. Les opérations que vous effectuez avec un élément sur la carte s’appliquent uniquement aux éléments qui partagent le même contexte.

Modifiez la disposition pour réorganiser le flux des relations et faciliter la lecture de la carte. Vous pouvez également déplacer des éléments autour de la carte en les faisant glisser.

Capture d’écran d’une fenêtre de carte de code avec le menu Disposition ouvert et la commande Gauche à Rgiht sélectionnée.

Conseil / Astuce

Par défaut, la disposition incrémentielle est activée. Cela réorganise le mappage le plus peu possible lorsque vous ajoutez de nouveaux éléments. Pour réorganiser l’intégralité de la carte chaque fois que vous ajoutez de nouveaux éléments, désactivez la disposition incrémentielle.

Capture d’écran d’une fenêtre de mappage de code avec les flèches relationshiop entre les champs pointant de gauche à droite.

Examinons ces méthodes. Sur la carte, double-cliquez sur la méthode PaintCanvas , ou sélectionnez cette méthode, puis appuyez sur F12. Vous apprenez que cette méthode crée history et paintObjects en tant que listes vides.

Capture d’écran d’une fenêtre de mappage de code avec la méthode PaintCanvas sélectionnée et une image d’extrait de code montrant le nom de la méthode PainCanvas mis en surbrillance.

Répétez maintenant les mêmes étapes pour examiner la définition de la clear méthode. Vous apprenez que clear effectue certaines tâches avec paintObjects et history. Il appelle ensuite la Repaint méthode.

Capture d’écran d’une fenêtre de mappage de code avec la méthode Clear sélectionnée et une image d’extrait de code montrant le code de la méthode Clear.

Examinez maintenant la définition de la addPaintObject méthode. Il effectue également certaines tâches avec history et paintObjects. Il appelle Repaint également.

Capture d’écran d’une fenêtre de mappage de code avec la méthode addPaintObject sélectionnée et une image d’extrait de code montrant le code de la méthode addPaintObject.

Rechercher le problème en examinant la carte

Il semble que toutes les méthodes qui modifient history et paintObjects appellent Repaint. Pourtant, la undo méthode n’appelle pas Repaint, même si undo modifie les mêmes champs. Vous pensez donc que vous pouvez résoudre ce problème en appelant Repaint à partir de undo.

Mappage de code - Rechercher l’appel de méthode manquant

Si vous n’avez pas de carte pour afficher cet appel manquant, il a peut-être été plus difficile de trouver ce problème, en particulier avec du code plus complexe.

Partager votre découverte et les étapes suivantes

Avant que vous ou quelqu’un d’autre ne corrige ce bogue, vous pouvez prendre des notes sur la carte sur le problème et comment le résoudre.

Carte de code - Commenter et marquer des éléments pour suivi

Par exemple, vous pouvez ajouter des commentaires aux éléments de carte et d’indicateur à l’aide de couleurs.

Mappage de code - Éléments commentés et marqués d’un indicateur

Si Microsoft Outlook est installé, vous pouvez envoyer par e-mail la carte à d’autres utilisateurs. Vous pouvez également exporter la carte sous forme d’image ou d’un autre format.

Carte de code - Partager, exporter, courrier

Résoudre le problème et montrer ce que vous avez fait

Pour résoudre ce bogue, vous ajoutez l'appel de Repaint à undo.

Mappage de code - Ajouter un appel de méthode manquant

Pour confirmer votre correctif, vous redémarrez votre session de débogage et essayez de reproduire le bogue. Maintenant, choisir Annuler mon dernier trait fonctionne comme prévu et confirme que vous avez fait le bon correctif.

Cartographie de code - Confirmer la correction de code

Vous pouvez mettre à jour la carte pour afficher le correctif que vous avez effectué.

Carte de code - Mettre à jour la carte avec un appel de méthode manquant

Votre carte affiche maintenant un lien entre annuler et Repaint.

Carte du code - Mise à jour de la carte avec appel de méthode

Note

Lorsque vous mettez à jour la carte, vous pouvez voir un message indiquant que l’index de code utilisé pour créer votre carte a été mis à jour. Cela signifie qu’une personne a modifié le code, ce qui empêche votre carte de correspondre au code actuel. Cela ne vous empêche pas de mettre à jour la carte, mais vous devrez peut-être recréer la carte pour confirmer qu’elle correspond au code.

Maintenant, vous avez terminé votre enquête. Vous avez trouvé et résolu le problème en mappant le code. Vous disposez également d’une carte qui vous aide à parcourir le code, à mémoriser ce que vous avez appris et à afficher les étapes que vous avez prises pour résoudre le problème.