? (Вычисление выражения)
Команда вопросительного знака (?
) вычисляет и отображает значение выражения.
Сам по себе вопросительный знак (?) отображает справку по команде. Команда ?
expression вычисляет заданное выражение.
? Expression
Параметры
Выражение
Указывает выражение для вычисления.
Среда
Элемент | Описание |
---|---|
Режимы | Пользовательский режим, режим ядра |
Цели | Динамический аварийный дамп |
Платформы | Все |
Комментарии
Входные и выходные ?
данные команды зависят от того, используется ли синтаксис выражений MASM или синтаксис выражений C++. Дополнительные сведения об этих типах синтаксиса выражений см. в разделе Вычисление выражений и синтаксис числовых выражений.
При использовании синтаксиса MASM входные и выходные данные зависят от текущего радикса. Чтобы изменить радикс, используйте команду n (Задать числовую базу).
Команда ?
вычисляет символы в выражении в контексте текущего потока и процесса.
Некоторые строки могут содержать escape-элементы, такие как \n
, \"
, \r
и \b
, которые предназначены для буквального считывания, а не интерпретируемых вычислителем. Если средство оценки интерпретирует escape-экранирование в строке, могут возникнуть ошибки при вычислении. Пример:
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 .
См. также раздел
.formats (Показать числовые форматы)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по