Utilisez les fenêtres Mémoire dans le débogueur Visual Studio (C#, C++, Visual Basic, F#)
Pendant le débogage, la fenêtre Mémoire affiche l’espace mémoire utilisé par votre application.
Les fenêtres du débogueur telles que Espion, Automatique et Variables locales ainsi que la boîte de dialogue Espion express vous montrent les variables qui sont stockées à des emplacements spécifiques en mémoire. La fenêtre Mémoire vous montre une vue d’ensemble. La vue mémoire est pratique pour examiner de grandes parties de données (mémoires tampons ou chaînes volumineuses, par exemple) qui ne s’affichent pas correctement dans les autres fenêtres.
La fenêtre mémoire n’est pas limitée à l’affichage des données. Elle affiche tout ce qui se trouve dans l’espace mémoire, qu’il s’agisse de données, de code et de bits de mémoire aléatoires dans la mémoire non affectée.
La fenêtre Mémoire n’est pas disponible pour le débogage de script ou de code SQL. Ces langues ne reconnaissent pas le concept de mémoire.
Ouvrir une fenêtre Mémoire
Comme d’autres fenêtres de débogueur, les fenêtres mémoire sont disponibles uniquement pendant une session de débogage.
Important
Pour activer la fenêtre Mémoire, vous devez sélectionner Activer le débogage au niveau de l’adresse dans Outils>Options (ou Déboguer>Options) >Débogage>Général.
Ouvrez une fenêtre Mémoire :
Assurez-vous que Activer le débogage au niveau de l’adresse est sélectionné dans Outils>Options (ou Débogage>Options) >Débogage>Général.
Démarrez le débogage en sélectionnant la flèche verte, en appuyant sur F5 ou en sélectionnant Déboguer>Démarrer le débogage.
Sous Déboguer>Windows>Mémoire, sélectionnez Mémoire 1, Mémoire 2, Mémoire 3 ou Mémoire 4. (Certaines éditions de Visual Studio n’offrent qu’une seule fenêtre mémoire.)
Plusieurs fenêtres vous permettent de conserver des vues pour différentes zones dans l’espace mémoire en même temps.
Se déplacer dans la fenêtre Mémoire
L’espace d’adressage d’un ordinateur est grand. Vous pouvez facilement vous laisser distraire si vous avez besoin de faire défiler la fenêtre Mémoire.
Les adresses mémoire supérieures apparaissent en bas de la fenêtre. Pour afficher une adresse supérieure, faites défiler vers le bas. Pour afficher une adresse inférieure, faites défiler vers le haut.
Dans la plupart des scénarios, vous souhaitez trouver un emplacement de mémoire spécifique.
Rechercher un emplacement de mémoire
Vous pouvez accéder instantanément à une adresse spécifiée dans la fenêtre Mémoire à l’aide d’un glisser-déplacer, ou en entrant l’adresse dans le champ Adresse. Le champ Address accepte les adresses alphanumériques et les expressions qui s'évaluent en adresses, comme e.User.NonroamableId
.
Pour forcer la réévaluation immédiate d’une expression dans le champ Adresse, sélectionnez l’icône en forme de flèche arrondie Réévaluer automatiquement.
Par défaut, la fenêtre Mémoire traite les expressions Address en tant qu’expressions dynamiques, qui sont réévaluées pendant que l'application est en cours d'exécution. Les expressions dynamiques peuvent être utiles, par exemple, pour afficher la mémoire qui est touchée par une variable de pointeur.
Utilisez le glisser-déplacer pour passer à un emplacement de mémoire :
Dans n’importe quelle fenêtre de débogueur, sélectionnez une adresse mémoire ou une variable de pointeur qui contient une adresse mémoire.
Effectuez un glisser-déposer de l’adresse ou du pointeur dans la fenêtre Mémoire.
Cette adresse apparaît dans le champ Adresse, et la fenêtre Mémoire s’ajuste pour afficher cette adresse en haut.
Entrée d’un emplacement dans le champ Adresse pour passer à un emplacement mémoire :
Tapez ou collez l’adresse ou l’expression dans le champ Adresse, puis appuyez sur Entrée, ou choisissez-la dans la liste déroulante dans le champ Adresse .
Cette adresse apparaît dans le champ Adresse, et la fenêtre Mémoire s’ajuste pour afficher cette adresse en haut.
Personnaliser la fenêtre Mémoire
Par défaut, le contenu de la mémoire apparaît sous forme d’entiers de 1 octets au format hexadécimal et la largeur de la fenêtre détermine le nombre de colonnes affichées. Vous pouvez personnaliser la façon dont la fenêtre mémoire affiche le contenu de la mémoire.
Modifiez le format du contenu de la mémoire :
- Cliquez avec le bouton droit dans la fenêtre mémoire, puis choisissez les formats souhaités dans le menu contextuel.
Modifiez le nombre de colonnes dans la fenêtre Mémoire :
- Sélectionnez la flèche déroulante en regard du champ Colonnes, puis sélectionnez le nombre de colonnes à afficher, ou sélectionnez automatique pour l’ajustement automatique en fonction de la largeur de la fenêtre.
Si vous ne souhaitez pas que le contenu de la fenêtre Mémoire change à mesure que votre application s’exécute, vous pouvez désactiver l’évaluation des expressions actives.
Activer/désactiver l’évaluation dynamique :
Cliquez avec le bouton droit dans la fenêtre Mémoire, puis sélectionnez Réévaluer automatiquement dans le menu contextuel.
Remarque
L’évaluation des expressions dynamiques est une fonction de bascule qui est activée par défaut. Ainsi, sélectionner réévaluer automatiquement la désactive. Si vous sélectionnez Réévaluer automatiquement, elle est réactivée.
Vous pouvez masquer ou afficher la barre d’outils en haut de la fenêtre mémoire. Vous n’aurez pas accès au champ Adresse ou à d’autres outils lorsque la barre d’outils est masquée.
Activer/désactiver l’affichage de la barre d’outils :
- Cliquez avec le bouton droit dans la fenêtre mémoire, puis sélectionnez Afficher la barre d’outils dans le menu contextuel. La barre d’outils apparaît ou disparaît, en fonction de son état précédent.
Suivre un pointeur à travers la mémoire (C/C++)
Dans les applications de code natif, vous pouvez utiliser des noms d’inscription en tant qu’expressions actives. Par exemple, vous pouvez utiliser le pointeur de pile pour suivre la pile.
Suivre un pointeur dans la mémoire :
Dans le champ Adresse de la fenêtre Mémoire, entrez une expression de pointeur qui se trouve dans l’étendue actuelle. Vous devrez la déréférencer en fonction du langage.
Appuyez sur Entrée.
Lorsque vous utilisez une commande de débogage telle que Étape, l’adresse mémoire affichée dans le champ Adresse et en haut de la fenêtre Mémoire change automatiquement à mesure que le pointeur change.
Afficher les pointeurs de mémoire (.NET)
Si vous souhaitez afficher le contenu d’un objet .NET en fonction d’un pointeur de mémoire, tel qu’une adresse obtenue à partir d’un instantané de tas, vous pouvez le faire à l’aide de la notation {CLR}@Address
. L’adresse doit être un pointeur vers la mémoire, par exemple 0x1D102A581B0. Entrez le pointeur de mémoire à l’aide de la notation {CLR}@Address
dans le champ Adresse de la fenêtre Mémoire. Vous pouvez également utiliser la même notation pour ajouter une montre dans la fenêtre de surveillance .
Pour obtenir l’adresse du pointeur de mémoire à partir d’un instantané de tas, ouvrez le vidage du tas, choisissez Déboguer la mémoire managée, ce qui ouvre l’outil Utilisation de la mémoire. Cliquez avec le bouton droit sur l’objet qui vous intéresse, puis choisissez Afficher les instances.