? (評估表示式)
問號 (?
) 命令會評估並顯示表示式的值。
問號本身 (?) 會顯示命令說明。 ?
表達式命令會評估指定的表達式。
? Expression
參數
運算式
指定要評估的表達式。
Environment
項目 | 說明 |
---|---|
模式 | 使用者模式、核心模式 |
目標 | 即時、損毀傾印 |
平台 | 全部 |
備註
命令的 ?
輸入和輸出取決於您使用的是MASM表示式語法或C++運算式語法。 如需這些表達式語法類型的詳細資訊,請參閱 評估表達式 和 數值表達式語法。
如果您使用MASM語法,輸入和輸出取決於目前的基底。 若要變更基數,請使用 n (Set Number Base) 命令。
命令 ?
會在目前線程和進程的內容中評估表達式中的符號。
某些字串可能包含逸出,例如 \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
在上述範例中 $spat
,MASM 運算符會檢查第一個字串,以判斷它是否符合第二個字串的模式(不區分大小寫)。 如需MASM運算子的詳細資訊,請參閱 MASM數位和運算符 主題。