43.windbg-.expr、n(设置默认的表达式语法、默认的数字基础0x、0n、0t、0y)

.expr

.expr 命令指定默认的表达式求值器

0:000> .expr
Current expression evaluator: MASM - Microsoft Assembler expressions
0:000> .expr /s masm
Current expression evaluator: MASM - Microsoft Assembler expressions
0:000> .expr /q
Available expression evaluators:
MASM - Microsoft Assembler expressions
C++ - C++ source expressions

Current expression evaluator: MASM - Microsoft Assembler expressions
0:000> .expr /s c++
Current expression evaluator: C++ - C++ source expressions

/q 显示可用的表达式类型的列表


n (Set Number Base)

n命令将默认的数字基数(radix)设置为指定值,或者显示当前基数。

不要将该命令和~n (Suspend Thread)命令混淆。

n可用来设置缺省基数为 16, 10 或者 8。所有不带前缀的数值都以该基数来解释

当前基数会作用于MASM表达式的输入和输出。它并不作用于C++ 表达式的输入输出

在C++表达式中的数字如果没有专门指定,则被认为是10进制数。

0:000> n 10
base is 10
0:000> ? 1+10
Evaluate expression: 11 = 0000000b
0:000> n 16    ///切换到16进制
base is 16
0:000> ? 1+10
Evaluate expression: 17 = 00000011
0:000> ?? 1+10
int 11

??后表示跟的是C++表达式

调试器启动时,默认的基数被设置为16。

在所有MASM表达式中,数字的值使用当前基数(16, 10, 或8)来进行解释。可以通过指定 0x  前缀(16进制)、  0n  前缀(10进制)、 0t  前缀(8进制)或者 0y  前缀(2进制)来覆盖当前基数。

0:006> n
base is 16
0:006> ? 0n10+1
Evaluate expression: 11 = 0000000b
0:006> ? 0t10+1
Evaluate expression: 9 = 00000009
0:006> ? 0y10+1
Evaluate expression: 3 = 00000003









你可能感兴趣的:(windbg)