Accès aux variables globales
Les noms des variables globales sont stockés dans les fichiers de symboles qui sont créés lors de la compilation d’une application. Le débogueur interprète le nom d’une variable globale comme une adresse virtuelle. Toute commande qui accepte une adresse en tant que paramètre accepte également le nom d’une variable. Par conséquent, vous pouvez utiliser toutes les commandes décrites dans Accès à la mémoire par adresse virtuelle pour lire ou écrire des variables globales.
En outre, vous pouvez utiliser le ? (Évaluer l’expression) commande pour afficher l’adresse associée à n’importe quel symbole.
WinDbg fournit des éléments d’interface utilisateur que vous pouvez utiliser (en plus des commandes) pour afficher et modifier des variables globales. Consultez Affichage et modification des variables globales dans WinDbg (classique).
Considérez l'exemple suivant. Supposons que vous souhaitiez examiner la MyCounter
variable globale, qui est un entier de 32 bits. Supposons également que le radix par défaut est 10.
Vous pouvez obtenir l’adresse de cette variable, puis l’afficher comme suit.
0:000> ? MyCounter
Evaluate expression: 1244892 = 0012fedc
0:000> dd 0x0012fedc L1
0012fedc 00000052
La première sortie de commande vous indique que l’adresse de MyCounter
est 0x0012FEDC. Vous pouvez ensuite utiliser la commande d* (Afficher la mémoire) pour afficher un mot double à cette adresse. (Vous pouvez également utiliser 1244892, qui est la version décimale de cette adresse. Toutefois, la plupart des programmeurs C préfèrent utiliser 0x0012FEDC.) La deuxième commande vous indique que la valeur de MyCounter est 0x52 (décimale 82).
Vous pouvez également effectuer ces étapes dans la commande suivante.
0:000> dd MyCounter L1
0012fedc 00000052
Pour remplacer la valeur de MyCounter
par décimale 83, utilisez la commande suivante.
0:000> ed MyCounter 83
Cet exemple utilise une entrée décimale, car ce format semble plus naturel pour un entier. Toutefois, la sortie de la commande d\* est toujours au format hexadécimal.
0:000> dd MyCounter L1 0012fedc 00000053