Partager via


Affichage et modification des variables locales dans WinDbg (classique)

Dans WinDbg, vous pouvez afficher les variables locales en entrant des commandes, en utilisant la fenêtre Locals ou à l’aide de la fenêtre Espion.

Fenêtre commande du débogueur

Vous pouvez afficher les variables et paramètres locaux en entrant la commande dv ou la commande dt dans la fenêtre Commande du débogueur.

Ouverture de la fenêtre Locals

La fenêtre Locals affiche des informations sur toutes les variables locales dans l’étendue actuelle.

Pour ouvrir ou basculer vers la fenêtre Locals, dans la fenêtre WinDbg, dans le menu Affichage , sélectionnez Locals. (Vous pouvez également appuyer sur ALT+3 ou sélectionner le bouton Locals dans la barre d’outils. Alt+Maj+3 ferme la fenêtre Locals.)

La capture d’écran suivante montre un exemple de fenêtre Locals.

Capture d’écran de la fenêtre Locals dans WinDbg.

La fenêtre Locals peut contenir quatre colonnes. Les colonnes Nom et Valeur sont toujours affichées, et les colonnes Type et Emplacement sont facultatives. Pour afficher les colonnes Type et Emplacement , sélectionnez les boutons Typecast et Emplacements , respectivement, dans la barre d’outils.

Utilisation de la fenêtre Locals

Dans la fenêtre Variables locales, vous pouvez effectuer les opérations suivantes :

  • La colonne Nom affiche le nom de chaque variable locale. Si une variable est une structure de données, une zone case activée s’affiche en regard de son nom. Pour développer ou réduire l’affichage des membres de la structure, sélectionnez ou désactivez la zone case activée.

  • La colonne Valeur affiche la valeur actuelle de chaque variable.

    • Pour entrer une nouvelle valeur pour la variable, double-cliquez sur la valeur actuelle et tapez la nouvelle valeur, ou modifiez l’ancienne valeur. (Les commandes couper, copier et coller peuvent être utilisées pour la modification.) Vous pouvez taper n’importe quelle expression C++.
    • Pour enregistrer la nouvelle valeur, appuyez sur ENTRÉE.
    • Pour ignorer la nouvelle valeur, appuyez sur Échap.
    • Si vous tapez une valeur non valide, l’ancienne valeur réapparaît lorsque vous appuyez sur ENTRÉE.

    Les entiers de type int sont affichés sous forme de valeurs décimales ; les entiers de type UINT sont affichés dans le radix actuel. Pour modifier le radix actuel, utilisez la commande n (Définir la base du nombre) dans la fenêtre Commande du débogueur.

  • La colonne Type (si elle est affichée dans la fenêtre Locals) affiche le type de données actuel de chaque variable. Chaque variable est affichée dans le format approprié pour son propre type de données. Les structures de données ont leurs noms de type dans la colonne Type . D’autres types de variables affichent « Entrer un nouveau type » dans cette colonne.

    Si vous double-cliquez sur « Entrer un nouveau type », vous pouvez convertir le type en entrant un nouveau type de données. Ce cast modifie l’affichage actuel de cette variable uniquement dans la fenêtre Locals ; elle ne change rien dans le débogueur ou sur l’ordinateur cible. En outre, si vous entrez une nouvelle valeur dans la colonne Valeur , le texte que vous entrez sera analysé en fonction du type réel du symbole, plutôt que de tout nouveau type que vous avez peut-être entré dans la colonne Type. Si vous fermez et rouvrez la fenêtre Locals, vous perdrez les modifications de type de données.

    Vous pouvez également entrer une commande d’extension dans la colonne Type . Le débogueur transmet l’adresse du symbole à cette extension et affiche la sortie résultante dans une série de lignes réductibles sous la ligne actuelle. Par exemple, si le symbole de cette ligne est une adresse valide pour un bloc d’environnement de thread, vous pouvez entrer !teb dans la colonne Type pour exécuter l’extension !teb sur l’adresse de ce symbole.

  • La colonne Emplacement (si elle est affichée dans la fenêtre Locals) affiche le décalage de chaque membre d’une structure de données.

  • Si une variable locale est une instance d’une classe qui contient des Vtables, la colonne Nom affiche les tables virtuelles et vous pouvez développer les tables virtuelles pour afficher les pointeurs de fonction. Si une table Vtable est contenue dans une classe de base qui pointe vers une implémentation dérivée, la _vtcast_Class de notation s’affiche pour indiquer les membres ajoutés en raison de la classe dérivée. Ces membres se développent comme le type de classe dérivé.

  • Le contexte local détermine quel ensemble de variables locales sera affiché dans la fenêtre Variables locales. Lorsque le contexte local change pour une raison quelconque, la fenêtre Locals est automatiquement mise à jour. Par défaut, le contexte local correspond à la position actuelle du compteur de programme. Pour plus d’informations sur la modification du contexte local, consultez Contexte local.

La fenêtre Locals comporte une barre d’outils qui contient deux boutons (Typecast et Emplacements) et un menu contextuel avec des commandes supplémentaires. Pour accéder au menu, sélectionnez et maintenez la touche enfoncée (ou cliquez avec le bouton droit) sur la barre de titre de la fenêtre ou sélectionnez l’icône en haut à droite de la fenêtre. La barre d’outils et le menu contiennent les boutons et commandes suivants.

  • (Barre d’outils et menu) Typecast active et désactive l’affichage de la colonne Type .

  • (Barre d’outils et menu) Emplacements active et désactive l’affichage de la colonne Emplacement .

  • (Menu uniquement) Affiche les valeurs 16 bits en tant qu’Unicode affiche les chaînes Unicode dans cette fenêtre. Cette commande active et désactive un paramètre global qui affecte la fenêtre Locals, la fenêtre Espion et la sortie de la commande du débogueur. Cette commande équivaut à utiliser la commande .enable_unicode (Activer l’affichage Unicode).

  • (Menu uniquement) Toujours afficher des nombres dans le radix par défaut entraîne l’affichage des entiers dans le radix par défaut au lieu de les afficher au format décimal. Cette commande active et désactive un paramètre global qui affecte la fenêtre Locals, la fenêtre Espion et la sortie de la commande du débogueur. Cette commande équivaut à utiliser la commande .force_radix_output (Utiliser Radix pour les entiers).

    Note La commande Toujours afficher les nombres dans radix par défaut n’affecte pas les entiers longs. Les entiers longs sont affichés au format décimal, sauf si la commande .enable_long_status (Activer l’affichage des entiers longs) est définie. La commande .enable_long_status affecte l’affichage dans la fenêtre Locals, la fenêtre Espion et dans la sortie de la commande du débogueur ; il n’existe pas d’équivalent pour cette commande dans le menu de la fenêtre Locals.

  • (Menu uniquement) Ouvrir la fenêtre mémoire pour la valeur sélectionnée ouvre une nouvelle fenêtre Mémoire ancrée qui affiche la mémoire en commençant à l’adresse de l’expression sélectionnée.

  • (Menu uniquement) Appeler dt pour la valeur de mémoire sélectionnée exécute la commande dt (type d’affichage) avec le symbole sélectionné comme paramètre. Le résultat s’affiche dans la fenêtre Commande du débogueur. L’option -n est automatiquement utilisée pour différencier le symbole d’une adresse hexadécimale. Aucune autre option n’est utilisée. Notez que le contenu généré à l’aide de cette sélection de menu est identique au contenu produit lors de l’exécution de la commande dt à partir de la ligne de commande, mais que le format est légèrement différent.

  • (Menu uniquement) Barre d’outils active et désactive la barre d’outils.

  • (Menu uniquement) Ancrer ou Undock entraîne l’entrée ou la sortie de la fenêtre dans l’état d’ancrage.

  • (Menu uniquement) Passer à une nouvelle station d’accueil ferme la fenêtre Locals et l’ouvre dans une nouvelle station d’accueil.

  • (Menu uniquement) Le paramètre Défini comme cible de tabulation pour le type de fenêtre n’est pas disponible pour la fenêtre Locals. Cette option est disponible uniquement pour les fenêtres Source ou Mémoire.

  • (Menu uniquement) Toujours flottante fait que la fenêtre reste déséquilibrée même si elle est déplacée vers un emplacement d’ancrage.

  • (Menu uniquement) Le déplacement avec le cadre entraîne le déplacement de la fenêtre lorsque le cadre WinDbg est déplacé, même si la fenêtre est désacfinée.

  • (Menu uniquement) L’aide ouvre cette rubrique dans la documentation Outils de débogage pour Windows.

  • (Menu uniquement) Fermer ferme cette fenêtre.

Fenêtre Espion

Dans WinDbg, vous pouvez utiliser la fenêtre Espion pour afficher et modifier des variables locales. La fenêtre Espion peut afficher n’importe quelle liste de variables souhaitée. Ces variables peuvent inclure des variables globales et des variables locales de n’importe quelle fonction. À tout moment, la fenêtre Espion affiche les valeurs de ces variables qui correspondent à l’étendue de la fonction actuelle. Vous pouvez également modifier les valeurs de ces variables via la fenêtre Espion.

Contrairement à la fenêtre Locals, la fenêtre Espion n’est pas affectée par les modifications apportées au contexte local. Seules les variables définies dans l’étendue du compteur de programme actuel peuvent voir leurs valeurs affichées ou modifiées.

Pour ouvrir la fenêtre Espion, choisissez Espion dans le menu Affichage . Vous pouvez également appuyer sur Alt+2 ou sélectionner le bouton Espion dans la barre d’outils. Alt+Maj+2 ferme la fenêtre Espion.

La capture d’écran suivante montre un exemple de fenêtre Espion.

Capture d’écran de la fenêtre Espion dans WinDbg.

La fenêtre Espion peut contenir quatre colonnes. Les colonnes Nom et Valeur sont toujours affichées, et les colonnes Type et Emplacement sont facultatives. Pour afficher les colonnes Type et Emplacement , sélectionnez les boutons Typecast et Emplacements , respectivement, dans la barre d’outils.

Voir aussi

Pour plus d’informations sur le contrôle des variables locales, une vue d’ensemble de l’utilisation de variables et de la modification de l’étendue, ainsi qu’une description d’autres commandes liées à la mémoire, consultez Mémoire en lecture et écriture.