Fichiers d’image mémoire dans le débogueur Visual Studio

Un fichier d’image mémoire est un instantané qui montre le processus en cours d’exécution et les modules qui ont été chargés pour une application à un moment donné. Une image mémoire avec des informations de tas comprend également un instantané de la mémoire de l’application à ce stade.

L’ouverture d’un fichier d’image mémoire avec un tas dans Visual Studio revient à s’arrêter sur un point d’arrêt dans une session de débogage. Bien que vous ne puissiez pas continuer l’exécution, vous pouvez examiner les piles, les threads et les valeurs de variable de l’application au moment de l’image mémoire.

Les images mémoire sont principalement utilisées pour déboguer les problèmes des machines auxquelles les développeurs n’ont pas accès. Vous pouvez utiliser le fichier d’image mémoire de la machine d’un client quand vous ne pouvez pas reproduire un incident ou un programme qui ne répond pas sur votre propre machine. Les testeurs créent également des images mémoire pour enregistrer les données d’incident ou de programme qui ne répond pas afin de les utiliser dans d’autres tests.

Le débogueur Visual Studio peut enregistrer des fichiers dump pour le code managé ou natif. Il peut déboguer des fichiers d’image mémoire créés par Visual Studio ou par d’autres programmes qui enregistrent des fichiers au format minidump.

Conditions requises et limitations :

  • Pour déboguer des fichiers d’image mémoire sur des machines 64 bits, Visual Studio doit s’exécuter sur une machine 64 bits.
  • Visual Studio peut déboguer des fichiers d’image mémoire d’applications managées sur le système d’exploitation Linux.
  • Visual Studio peut déboguer les fichiers dump des applications natives à partir des périphériques ARM. Visual Studio peut également déboguer les images mémoire d’applications managées sur des appareils ARM, mais uniquement dans le débogueur natif.
  • Pour déboguer des fichiers d’image mémoire en mode noyau ou utiliser l’extension de débogage SOS.dll dans Visual Studio, téléchargez les outils de débogage pour Windows dans le Kit de pilotes Windows (WDK).
  • Visual Studio ne peut pas déboguer les fichiers d’image mémoire enregistrés dans l’ancien format image mémoire en mode utilisateur complet. Notez qu’une image mémoire en mode utilisateur complet n’est pas la même chose qu’une image mémoire avec tas.
  • Le débogage des fichiers dump de code optimisé peut faire l'objet de confusion. Par exemple, l’incorporation du compilateur des fonctions peut entraîner des piles d’appels inattendues et d’autres optimisations peuvent modifier la durée de vie des variables.

Fichiers dump, avec ou sans tas

Les fichiers d’image mémoire peuvent ou non contenir des informations de tas.

  • Les fichiers d’image mémoire avec tas contiennent un instantané de la mémoire de l’application, y compris les valeurs des variables, au moment de l’image mémoire. Visual Studio enregistre également les fichiers binaires des modules natifs chargés dans le fichier d’image mémoire avec un tas, ce qui peut faciliter le débogage. Visual Studio peut charger des symboles à partir d’un fichier d’image mémoire avec un tas, même s’il ne trouve pas de fichier binaire d’application.

  • Les fichiers d’image mémoire sans tas sont beaucoup plus petits que les images mémoire avec tas, mais le débogueur doit charger les fichiers binaires de l’application pour trouver les informations des symboles. Les fichiers binaires chargés doivent correspondre exactement à ceux exécutés pendant la création de l’image mémoire. Les fichiers d’image mémoire sans tas enregistrent les valeurs des variables de pile uniquement.

Créer un fichier dump

Quand vous déboguez un processus dans Visual Studio, vous pouvez enregistrer un fichier d’image mémoire quand le débogueur s’est arrêté sur une exception ou un point d’arrêt.

Avec le débogage juste-à-temps activé, vous pouvez attacher le débogueur Visual Studio à un processus bloqué en dehors de Visual Studio, puis enregistrer un fichier d’image mémoire à partir du débogueur. Consultez Attacher le débogueur aux processus en cours d’exécution.

Pour enregistrer un fichier dump :

  1. Quand le débogueur s’arrête sur une erreur ou un point d’arrêt pendant le débogage, sélectionnez Déboguer>Enregistrer l’image mémoire sous.

  2. Dans la boîte de dialogue Enregistrer l’image mémoire sous, sous Enregistrer comme type, sélectionnez Minidump ou Minidump avec tas (valeur par défaut).

  3. Accédez à un chemin et sélectionnez un nom pour le fichier d’image mémoire, puis sélectionnez Enregistrer.

Notes

Vous pouvez créer des fichiers d’image mémoire avec n’importe quel programme qui prend en charge le format Minidump Windows. Par exemple, l’utilitaire en ligne de commande Procdump de Windows Sysinternals peut créer des fichiers de processus de vidage sur incident sur des déclencheurs ou à la demande. Consultez Exigences et limitations pour plus d’informations sur l’utilisation d’autres outils pour créer des fichiers d’image mémoire.

Ouvrir un fichier dump

  1. Dans Visual Studio, sélectionnez Fichier>Ouvrir>Fichier.

  2. Dans la boîte de dialogue Ouvrir un fichier, localisez et sélectionnez le fichier d’image mémoire. Il porte généralement une extension .dmp. Sélectionnez OK.

    La fenêtre Récapitulatif du fichier Minidump affiche un récapitulatif et les informations de module du fichier d’image mémoire, ainsi que les actions que vous pouvez effectuer.

    Screenshot showing Minidump summary page.

  3. Sous Actions :

    • Pour définir des emplacements de chargement de symboles, sélectionnez Définir des chemins de symboles.
    • Pour démarrer le débogage, sélectionnez Déboguer avec Managé uniquement, Déboguer avec Natif uniquement, Déboguer avec Mixte ou Déboguer avec Mémoire managée.

Rechercher des fichiers .exe, .pdb et sources

Pour utiliser des fonctionnalités de débogage complètes sur un fichier d’image mémoire, Visual Studio a besoin des éléments suivants :

  • Les fichiers .exe pour lesquels l’image mémoire a été créée, et d’autres fichiers binaires (comme des DLL) utilisés par le processus d’image mémoire.
  • Fichiers de symboles (.pdb) pour le fichier .exe et d’autres fichiers binaires.
  • Les fichiers .exe et .pdb qui correspondent exactement à la version et à la build des fichiers au moment de la création de l’image mémoire.
  • Les fichiers sources des modules correspondants. Vous pouvez utiliser le désassemblage des modules si vous ne trouvez pas les fichiers sources.

Si l’image mémoire a des données de tas, Visual Studio peut gérer les fichiers binaires manquants pour certains modules, mais il doit avoir les fichiers binaires de suffisamment de modules afin de pouvoir générer des piles d’appels valides.

Rechercher les chemins des fichiers .exe

Visual Studio recherche automatiquement ces emplacements pour les fichiers .exe qui ne sont pas dans le fichier d’image mémoire :

  1. Le dossier contenant le fichier d’image mémoire.
  2. Le chemin du module spécifié par le fichier d’image mémoire, qui est le chemin du module sur la machine qui a collecté l’image mémoire.
  3. Chemins de symboles spécifiés dans Outils (ou Débogage) >Options>Débogage>Symboles. Vous pouvez également ouvrir la page Symboles à partir du volet Actions de la fenêtre Récapitulatif du fichier d’image mémoire. Dans cette page, vous pouvez ajouter d’autres emplacements de recherche.

Utiliser les pages Aucun fichier binaire, Aucun symbole ou Aucune source

Si Visual Studio ne trouve pas les fichiers dont il a besoin pour déboguer un module dans l’image mémoire, il affiche une page Aucun binaire, Aucun symbole ou Aucune source. Ces pages fournissent des informations détaillées sur la cause du problème ainsi que des liens d’action qui peuvent vous aider à localiser les fichiers. Consultez Spécifier les fichiers de symbole (.pdb) et les fichiers sources.