Partager via


Fichiers de vidage en mode utilisateur

Dans cet article, obtenez un aperçu des fichiers de vidage en mode utilisateur et comment les utiliser pour aider à résoudre les bogues et les plantages.

Pour plus d’informations sur l’analyse d’un fichier de vidage, veuillez consulter la section Analyser un fichier de vidage en mode utilisateur.

Types de fichiers de vidage en mode utilisateur

Plusieurs types de fichiers de vidage en cas de plantage en mode utilisateur sont disponibles. Les différents types de fichiers de vidage sont divisés en deux catégories :

Vous pouvez obtenir une quantité importante d’informations en analysant un fichier de vidage. Cependant, aucun fichier de vidage ne peut fournir autant d’informations que le débogage du plantage à l’aide d’un débogueur.

Vidages complets en mode utilisateur

Un vidage complet en mode utilisateur est le fichier de vidage de base en mode utilisateur. Un fichier de vidage complet en mode utilisateur comprend :

  • L’espace mémoire entier d’un processus.
  • L’image exécutable du programme.
  • Le tableau des handles.
  • D’autres informations qui aident le débogueur à reconstruire la mémoire qui était utilisée lorsque le vidage s’est produit.

Vous pouvez réduire un fichier de vidage complet en mode utilisateur en un minidump. Pour réduire un fichier de vidage complet en mode utilisateur, chargez d’abord le fichier de vidage dans le débogueur. Ensuite, utilisez la commande .dump (Create Dump File) pour enregistrer un nouveau fichier de vidage au format minidump.

Malgré leurs noms, le plus grand fichier de minidump contient plus d’informations que le fichier de vidage complet en mode utilisateur. Par exemple, les commandes .dump /mf et .dump /ma créent des fichiers plus grands et plus complets que la commande .dump /f.

En mode utilisateur, .dump /m[MiniOptions] est souvent le meilleur choix. Les fichiers de vidage que vous créez en utilisant cette option peuvent varier en taille, de très petit à très grand. En spécifiant l’option MiniOptions appropriée, vous pouvez contrôler exactement quelles informations sont incluses.

Minidumps

La taille et le contenu d’un fichier de minidump varient en fonction du programme en cours de vidage, de l’application effectuant le vidage et des options sélectionnées. Parfois, un fichier de minidump est modérément grand et inclut la mémoire complète et la table des handles. D’autres fois, le fichier de minidump est beaucoup plus petit. Par exemple, un fichier de minidump peut ne contenir que des informations sur un seul thread, ou ne contenir que des informations sur les modules référencés dans la pile.

Le terme minidump est trompeur car les plus grands fichiers de minidump contiennent plus d’informations qu’un fichier de vidage complet en mode utilisateur. Par exemple, .dump /mf ou .dump /ma crée un fichier plus grand et plus complet que .dump /f. Pour cette raison, nous vous recommandons d’utiliser .dump /m[MiniOptions] au lieu de .dump /f pour créer tous les fichiers de vidage en mode utilisateur.

Si vous créez un fichier de minidump en utilisant le débogueur, vous pouvez choisir quelles informations inclure. La commande .dump /m inclut des informations de base sur les modules chargés qui composent le processus cible, des informations sur les threads et des informations sur la pile. Vous pouvez modifier la commande de base en utilisant l’une des options décrites dans le tableau suivant :

Option .dump Effet sur le fichier de vidage
/ma Crée un minidump avec toutes les ajouts optionnels. L’option /ma est équivalente à /mfFhut. Elle ajoute les données de mémoire complète, les données de handles, les informations sur les modules déchargés, les informations de base sur la mémoire et les informations sur le temps des threads au minidump.
/mf Ajoute les données de mémoire complète au minidump. Toutes les pages accessibles engagées appartenant à l’application cible sont incluses.
/mF Ajoute toutes les informations de mémoire de base au minidump. Cette option ajoute un flux au minidump qui contient toutes les informations de base sur la mémoire, et non seulement des informations sur la mémoire valide. Le débogueur utilise ces informations pour reconstruire la disposition complète de la mémoire virtuelle du processus lors du débogage du minidump.
/mh Ajoute des données sur les handles associés à l’application cible au minidump.
/mu Ajoute des informations sur les modules déchargés au minidump. Cette option est disponible uniquement sur Windows Server 2003 et les versions ultérieures de Windows.
/mt Ajoute plus d’informations sur les threads au minidump. Les informations sur les threads incluent les temps des threads, qui peuvent être affichés en utilisant .ttime (Display Thread Times) lors du débogage du minidump.
/mi Ajoute de la mémoire secondaire au minidump. La mémoire secondaire est toute mémoire référencée par un pointeur dans la pile ou dans le magasin, ainsi qu’une petite région entourant cette adresse.
/mp Ajoute les données du bloc d’environnement de processus (PEB) et du bloc d’environnement de thread au minidump. Ces informations peuvent être utiles si vous avez besoin d’accéder aux informations système de Windows concernant les processus et les threads de l’application.
/mw Ajoute toutes les pages privées en lecture-écriture engagées au minidump.
/md Ajoute tous les segments de données en lecture-écriture dans l’image exécutable au minidump.
/mc Ajoute des sections de code dans les images.
/mr Supprime du minidump des portions de la pile et de la mémoire de magasin qui ne sont pas utilisées pour recréer la trace de pile. Les variables locales et d’autres valeurs de types de données sont également supprimées. Cette option ne rend pas le minidump plus petit (les sections de mémoire non utilisées sont mises à zéro), mais elle est utile si vous souhaitez protéger la confidentialité d’autres applications.
/mR Supprime les chemins complets des modules du minidump. Seuls les noms des modules sont inclus. Cette option est utile si vous souhaitez protéger la confidentialité de la structure du répertoire de l’utilisateur.

Vous pouvez combiner ces options. Par exemple, utilisez la commande .dump /mfiu pour créer un minidump modérément grand qui contient la mémoire déchargée et secondaire. Utilisez la commande .dump /mrR pour créer un minidump qui supprime certaines informations de l’utilisateur. Pour plus de détails sur la syntaxe complète, consultez la section .dump (Créer un fichier Dump).

Outils à utiliser pour créer un fichier de vidage

Il existe plusieurs outils différents que vous pouvez utiliser pour créer un fichier de vidage en mode utilisateur :

ProcDump

ProcDump est un utilitaire en ligne de commande que vous pouvez utiliser pour surveiller une application en cas de pics de CPU et pour générer des fichiers de vidage en cas de pic. Un administrateur ou un développeur peut utiliser les fichiers de vidage pour déterminer la cause du pic. ProcDump inclut également une surveillance des fenêtres bloquées (en utilisant la même définition de blocage de fenêtre que Windows et le Gestionnaire des tâches) et des exceptions non gérées. Vous pouvez utiliser ProcDump pour générer des vidages en fonction des valeurs des compteurs de performance du système. ProcDump peut également servir d’utilitaire de vidage de processus général que vous pouvez intégrer dans d’autres scripts.

Pour plus d’informations sur la création d’un fichier de vidage en mode utilisateur à l’aide de l’utilitaire Sysinternals ProcDump, consultez la section ProcDump.

WinDbg et CDB

Le débogueur en console (CDB) et le débogueur Windows (WinDbg) sont des outils de débogage inclus dans le Windows Software Development Kit et le Windows Driver Kit. Consultez les options d’installation dans la section Télécharger et installer le débogueur Windows WinDbg.

Vous pouvez utiliser CDB ou WinDbg pour créer des fichiers de vidage en mode utilisateur de plusieurs manières :

  • Créer automatiquement un fichier de vidage.
  • Créer des fichiers de vidage lors du débogage.
  • Réduire un fichier de vidage existant.

Pour plus d’informations sur les outils, consultez les sections Premiers pas avec le débogage Windows et Déboguer en utilisant CDB.

Créer automatiquement un fichier de vidage

Lorsqu’une erreur d’application se produit, Windows peut réagir de plusieurs manières, en fonction des paramètres de débogage post-mortem. Si ces paramètres instruisent un outil de débogage pour créer un fichier de vidage, un fichier de vidage de mémoire en mode utilisateur est créé. Pour plus d’informations, consultez la section Activer le débogage post-mortem.

Créer des fichiers de vidage lors du débogage

Lorsque CDB ou WinDbg débogue une application en mode utilisateur, vous pouvez également utiliser la commande .dump (Créer un fichier Dump) pour créer un fichier de vidage.

Cette commande ne provoque pas l’arrêt de l’application cible. En sélectionnant des options de commande spécifiques, vous pouvez créer un fichier de minidump qui contient exactement la quantité d’informations souhaitée.

Réduire un fichier de vidage existant

Vous pouvez utiliser CDB ou WinDbg pour réduire un fichier de vidage. Pour réduire un fichier de vidage, commencez par déboguer un fichier de vidage existant. Ensuite, utilisez la commande .dump pour créer un fichier de vidage de plus petite taille.

Débogage avec Time Travel Debugging

Une autre option pour déboguer des applications en mode utilisateur est le débogage avec Time Travel Debugging (TTD). TTD est un outil que vous pouvez utiliser pour enregistrer votre processus pendant qu’il s’exécute. Vous pouvez rejouer l’enregistrement de la session de débogage pour trouver le bogue. Vous pouvez facilement accéder à différentes parties de l’enregistrement pour comprendre les conditions qui ont conduit au bogue et comment résoudre le problème.

TTD présente des avantages significatifs par rapport aux fichiers de vidage en cas de plantage, qui manquent souvent du code d’exécution qui a conduit à la défaillance. La capacité de revenir en arrière dans l’exécution du code peut être utile pour déterminer la cause première.

Pour plus d’informations, consultez la section Présentation de Time Travel Debugging.

Voir aussi