? (Évaluer l’expression)

La commande point d’interrogation (?) évalue et affiche la valeur d’une expression.

Un point d’interrogation seul ( ?) affiche l’aide des commandes. La ? commande expression évalue l’expression donnée.

? Expression

Paramètres

Expression

Spécifie l’expression à évaluer.

Environnement

Élément Description
Modes Mode utilisateur, mode noyau
Targets Vidage en direct sur incident
Plateformes Tous

Remarques

L’entrée et la sortie de la ? commande varient selon que vous utilisez la syntaxe d’expression MASM ou la syntaxe de l’expression C++. Pour plus d’informations sur ces types de syntaxe d’expression, consultez Évaluation des expressions et Syntaxe des expressions numériques.

Si vous utilisez la syntaxe MASM, l’entrée et la sortie dépendent du radix actuel. Pour modifier le radix, utilisez la commande n (Set Number Base).

La ? commande évalue les symboles dans l’expression dans le contexte du thread et du processus actuels.

Certaines chaînes peuvent contenir des échappements, comme \n, \", \ret \b, qui sont destinées à être lues littéralement, plutôt qu’interprétées par l’évaluateur. Si un échappement dans une chaîne est interprété par l’évaluateur, des erreurs d’évaluation peuvent se produire. Par exemple :

0:000> as AliasName c:\dir\name.txt
0:000> al
  Alias            Value
 -------          -------
 AliasName        c:\dir\name.txt
0:001> ? $spat( "c:\dir\name.txt", "*name*" )
Evaluate expression: 0 = 00000000

0:001> ? $spat( "${AliasName}", "*name*" )
Evaluate expression: 0 = 00000000

0:001> ? $spat( "c:\dir\", "*filename*" )
Syntax error at '( "c:\dir\", "*filename*" )

Dans les deux premiers exemples, même si la chaîne correspond au modèle, l’évaluateur retourne la valeur FALSE. Dans la troisième, l’évaluateur ne peut pas effectuer de comparaison, car la chaîne se termine par une barre oblique inverse ( \ ) et le \" est donc traduit par l’évaluateur.

Pour que l’évaluateur interprète une chaîne littéralement, vous devez utiliser la @"String" syntaxe . L’exemple de code suivant montre les résultats corrects :

0:000> ? $spat( @"c:\dir\name.txt", "*name*" )
Evaluate expression: 1 = 00000000`00000001

0:000> ? $spat( @"${AliasName}", "*name*" )
Evaluate expression: 1 = 00000000`00000001

0:001> ? $spat( @"c:\dir\", "*filename*" )
Evaluate expression: 0 = 00000000

Dans les exemples précédents, l’opérateur $spat MASM vérifie la première chaîne pour déterminer si elle correspond (sans respect de la casse) au modèle de la deuxième chaîne. Pour plus d’informations sur les opérateurs MASM, consultez la rubrique Numéros et opérateurs MASM .

Voir aussi

?? (Évaluer l’expression C++)

.formats (Afficher les formats numériques)

Numéros et opérateurs MASM

Nombres et opérateurs C++

Expressions MASM et expressions C++

Exemples d’expressions mixtes