Fichiers de vidage en mode utilisateur

Dans cet article, découvrez une vue d’ensemble des fichiers de vidage en mode utilisateur et de la façon de les utiliser pour résoudre les bogues et les incidents.

Pour plus d’informations sur l’analyse d’un fichier de vidage, consultez Analyser un fichier de vidage en mode utilisateur.

Types de fichiers de vidage en mode utilisateur

Plusieurs types de fichiers de vidage sur incident 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. Toutefois, aucun fichier de vidage ne peut fournir la quantité d’informations que vous obtenez lors du débogage de l’incident à l’aide d’un débogueur.

Vidages complets en mode utilisateur

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

  • Espace mémoire entier d’un processus.
  • Image exécutable du programme.
  • Table de handles.
  • Autres informations qui aident le débogueur à reconstruire la mémoire utilisée lorsque le vidage s’est produit.

Vous pouvez réduire un fichier de vidage complet en mode utilisateur en minidump. Pour réduire un fichier de vidage complet en mode utilisateur, commencez par charger le fichier de vidage dans le débogueur. Ensuite, utilisez la commande .dump (Créer un fichier de vidage) pour enregistrer un nouveau fichier de vidage au format minidump.

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

En mode utilisateur, .dump /m[MiniOptions] est souvent le meilleur choix. La taille des fichiers de vidage que vous créez à l’aide de ce commutateur peut varier de très petite à très grande. En spécifiant le commutateur MiniOptions approprié, vous pouvez contrôler exactement quelles informations sont incluses.

Minidumps

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

Le terme minidump est trompeur, car les fichiers minidump les plus volumineux 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 créer tous les fichiers de .dump /f vidage en mode utilisateur.

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

Option .dump Effet sur le fichier de vidage
/ma Crée un minidump avec tous les ajouts facultatifs. L’option /ma est équivalente à /mfFhut. Il ajoute des données de mémoire complète, des données de gestion, des informations de module déchargées, des informations de mémoire de base et des informations sur l’heure du thread au minidump.
/mf Ajoute des données de mémoire complètes au minidump. Toutes les pages validées accessibles appartenant à l’application cible sont incluses.
/mF Ajoute toutes les informations de mémoire de base au minidump. Ce commutateur ajoute un flux au minidump qui contient toutes les informations de mémoire de base, pas seulement des informations sur la mémoire valide. Le débogueur utilise les informations pour reconstruire la disposition de mémoire virtuelle complète du processus lorsque le minidump est en cours de débogage.
/mh Ajoute des données sur les handles associés à l’application cible au minidump.
/mu Ajoute des informations de module déchargées au minidump. Cette option est disponible uniquement dans Windows Server 2003 et versions ultérieures de Windows.
/mt Ajoute des informations supplémentaires sur le thread au minidump. Les informations de thread incluent les heures de thread, qui peuvent être affichées à l’aide de .ttime (Display Thread Times) lorsque vous déboguez le 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 sur la pile ou le magasin de stockage, ainsi qu’une petite région entourant cette adresse.
/mp Ajoute des données de bloc d’environnement de processus et de bloc d’environnement de thread au minidump. Ces informations peuvent être utiles si vous avez besoin d’accéder aux informations système Windows concernant les processus et les threads de l’application.
/mw Ajoute toutes les pages privées en lecture-écriture validé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 des parties minidump de la pile et stocke la mémoire qui ne sont pas utilisées pour recréer la trace de la pile. Les variables locales et d’autres valeurs de type de données sont également supprimées. Cette option ne réduit pas la taille du minidump (les sections de mémoire inutilisées sont réduites à zéro), mais elle est utile si vous souhaitez protéger la confidentialité d’autres applications.
/mR Supprime les chemins d’accès complets du module minidump. Seuls les noms de module sont inclus. Cette option est utile si vous souhaitez protéger la confidentialité de la structure de répertoires de l’utilisateur.

Vous pouvez combiner ces options de commutateur. Par exemple, utilisez la commande .dump /mfiu pour créer un minidump modérément volumineux qui contient de 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 d’informations sur la syntaxe, consultez .dump (Créer un fichier de vidage).

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
  • CDB
  • WinDbg

ProcDump

ProcDump est un utilitaire en ligne de commande que vous pouvez utiliser pour surveiller les pics d’uc d’une application et pour générer des vidages sur incident pendant un pic. Un administrateur ou un développeur peut utiliser les fichiers de vidage sur incident pour déterminer la cause du pic. ProcDump inclut également la surveillance des fenêtres bloquées (en utilisant la même définition d’un 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 performances système. ProcDump peut également servir d’utilitaire de vidage de processus général que vous pouvez incorporer 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 ProcDump.

CDB et WinDbg

Le débogueur de console (CDB) et le débogueur Windows (WinDbg) sont des outils de débogage inclus dans le Kit de développement logiciel Windows et le Kit de pilotes Windows. Consultez les options d’installation dans 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 façons :

  • Créez automatiquement un fichier de vidage.
  • Créez des fichiers de vidage lorsque vous déboguez.
  • Réduire un fichier de vidage existant.

Pour plus d’informations sur les outils, consultez Prise en main avec le débogage et le débogage Windows à l’aide de CDB.

Créer un fichier de vidage automatiquement

Lorsqu’une erreur d’application se produit, Windows peut répondre de plusieurs façons, en fonction des paramètres de débogage post-mortem. Si ces paramètres indiquent à un outil de débogage de créer un fichier de vidage, un fichier de vidage de mémoire en mode utilisateur est créé. Pour plus d’informations, consultez 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 de vidage) pour créer un fichier de vidage.

Cette commande n’entraîne pas l’arrêt de l’application cible. En sélectionnant des options de commande spécifiques, vous pouvez créer un fichier 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 à déboguer un fichier de vidage existant. Ensuite, utilisez la .dump commande pour créer un fichier de vidage d’une taille plus petite.

Débogage de voyage dans le temps

Une autre option pour déboguer des applications en mode utilisateur est le débogage de voyage dans le temps (TTD). TTD est un outil que vous pouvez utiliser pour enregistrer votre processus pendant son exécution. Vous pouvez relire l’enregistrement de la session du débogueur pour rechercher le bogue. Vous pouvez facilement accéder aux 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 sur incident, qui manquent souvent l’exécution du code qui a conduit à l’échec. La possibilité de reculer dans l’exécution du code peut être utile pour déterminer la cause racine.

Pour plus d’informations, consultez Vue d’ensemble du débogage de voyage dans le temps.

Étapes suivantes