? (Avaliar Expressão)
O comando ponto de interrogação (?
) avalia e exibe o valor de uma expressão.
Um ponto de interrogação por si só (?) exibe a ajuda do comando. O ?
comando expression avalia a expressão fornecida.
? Expression
Parâmetros
Expressão
Especifica a expressão a ser avaliada.
Ambiente
Item | Descrição |
---|---|
Modos | Modo de usuário, modo kernel |
Destinos | Ao vivo, despejo de memória |
Plataformas | Tudo |
Comentários
A entrada e a saída do comando dependem se você está usando a ?
sintaxe de expressão MASM ou a sintaxe de expressão C++. Para obter mais informações sobre esses tipos de sintaxe de expressão, consulte Avaliando expressões e sintaxe de expressão numérica.
Se você estiver usando a sintaxe MASM, a entrada e a saída dependerão da base atual. Para alterar a base, use o comando n (Definir Base Numérica).
O ?
comando avalia símbolos na expressão no contexto do thread e do processo atuais.
Algumas cadeias de caracteres podem conter escapes, como \n
, \"
, \r
e \b
, que devem ser lidos literalmente, em vez de interpretados pelo avaliador. Se um escape dentro de uma cadeia de caracteres for interpretado pelo avaliador, poderão ocorrer erros na avaliação. Por exemplo:
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*" )
Nos dois primeiros exemplos, mesmo que a cadeia de caracteres corresponda ao padrão, o avaliador está retornando um valor de FALSE. Na terceira, o avaliador não pode fazer uma comparação porque a cadeia de caracteres termina em uma barra invertida ( \
) e, portanto, o é traduzido \"
pelo avaliador.
Para fazer com que o avaliador interprete uma cadeia de caracteres literalmente, você deve usar a @"String"
sintaxe. O exemplo de código a seguir mostra os resultados corretos:
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
Nos exemplos anteriores, o $spat
operador MASM verifica a primeira cadeia de caracteres para determinar se ela corresponde (sem distinção entre maiúsculas e minúsculas) ao padrão da segunda cadeia de caracteres. Para obter mais informações sobre operadores MASM, consulte o tópico Números e operadores MASM.
Confira também
.formats (Mostrar formatos numéricos)