? (Вычислять выражение)
Команда вопросительного знака (?
) вычисляет и отображает значение выражения.
Сам по себе вопросительный знак (?) отображает справку по команде. Команда ?
выражения вычисляет заданное выражение.
? Expression
Параметры
Выражение
Указывает выражение для вычисления.
Среда
Позиция | Description |
---|---|
Режимы | Режим пользователя, режим ядра |
Целевые объекты | Динамический, аварийный дампа |
Платформы | Все |
Замечания
Входные и выходные данные ?
команды зависят от того, используется ли синтаксис выражения MASM или синтаксис выражения C++. Дополнительные сведения об этих типах синтаксиса выражений см. в разделе "Оценка выражений" и "Синтаксис числовых выражений".
Если используется синтаксис MASM, входные и выходные данные зависят от текущего радикса. Чтобы изменить радикс, используйте команду n (set Number Base).
Команда ?
вычисляет символы в выражении в контексте текущего потока и процесса.
Некоторые строки могут содержать escape-адреса, такие как \n
, \r
\"
и \b
, которые должны быть прочитаны буквально, а не интерпретированы вычислителем. Если экран в строке интерпретируется оценщиком, могут возникать ошибки в оценке. Например:
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*" )
В первых двух примерах, даже если строка соответствует шаблону, средство оценки возвращает значение FALSE. В третьем средство оценки не может выполнить сравнение, так как строка заканчивается обратной косой чертой ( \
) и поэтому \"
преобразуется вычислителем.
Чтобы получить средство оценки для интерпретации строки буквально, необходимо использовать @"String"
синтаксис. В следующем примере кода показаны правильные результаты:
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
В предыдущих примерах оператор MASM проверяет первую строку, $spat
чтобы определить, соответствует ли она (без учета регистра) шаблон второй строки. Дополнительные сведения о операторах MASM см. в разделе "Номера и операторы MASM".
См. также
Форматы .форматов (отображение числовых форматов)