Solaris 模块调试器指南

算术展开

MDB 命令前面是表示起始地址的可选表达式或起始地址和重复计数时,将执行算术展开。也可以执行算术展开以计算 dcmd 的数值参数。算术表达式可以出现在用方括号括起来且前面是美元符号 ($[ expression ]) 的参数列表中,并将被替换为表达式的值。

表达式可以包含以下任一特殊字:

integer

指定的整数值。整数值可以使用 0i0I 作为前缀以指示二进制值,使用 0o0O 作为前缀以指示八进制值,使用 0t0T 作为前缀以指示十进制值,以及使用 0x0X 作为前缀以指示十六进制值(缺省值)。

0[tT][0-9]+.[0-9]+

指定的十进制浮点值,已转换为其 IEEE 双精度浮点表示形式

'cccccccc'

通过将每个字符转换为等于其 ASCII 值的字节而计算的整数值。在字符常量中,最多可以指定八个字符。字符按相反顺序(从右到左)填入整数,从最低有效字节开始。

<identifier

identifier 指定的变量值

identifier

identifier 指定的符号值

(expression)

expression 的值

.

点值

&

用于执行 dcmd 的最新点值

+

按当前增量递增的点值

^

按当前增量递减的点值

增量是一个全局变量,它存储上一个格式设置 dcmd 读取的总字节。有关增量的更多信息,请参阅格式设置 dcmd的讨论。

一元运算符

一元运算符是右关联的,其优先级高于二元运算符。一元运算符如下:

#expression

逻辑否定

~expression

按位补码

-expression

整型否定

%expression

与目标虚拟地址空间中虚拟地址 expression 相对应的目标文件位置处指针大小量的值

%/[csil]/expression

与目标虚拟地址空间中虚拟地址 expression 相对应的目标文件位置处 char、short、int 或 long 大小量的值

%/[1248]/expression

与目标虚拟地址空间中虚拟地址 expression 相对应的目标文件位置处单字节、双字节、四字节或八字节量的值

*expression

目标虚拟地址空间中虚拟地址 expression 处指针大小量的值

*/[csil]/expression

目标虚拟地址空间中虚拟地址 expression 处 char、short、int 或 long 大小量的值

*/[1248]/expression

目标虚拟地址空间中虚拟地址 expression 处单字节、双字节、四字节或八字节量的值

二元运算符

二元运算符是左关联的,其优先级低于一元运算符。按最高到最低的优先顺序排列,二元运算符如下:

*

整数相乘

%

整数相除

#

将左侧值向上舍入为最接近的右侧值倍数

+

整数相加

-

整数相减

<<

按位向左移位

>>

按位向右移位

==

逻辑相等

!=

逻辑不等

&

按位和

^

按位异或

|

按位或