Solaris 模块调试器指南

语法

调试器处理来自标准输入的命令。如果标准输入是终端,则 MDB 提供终端编辑功能。MDB 还可以处理来自宏文件和 dcmd 管道的命令,如下所述。语言语法是围绕计算表达式的值(通常为目标中的内存地址)和向该地址应用 dcmd 的概念设计的。当前的地址位置称为 dot,"." 用于引用其值。

metacharacter 是以下字符之一:

[ ] | ! / \ ? = > $ : ; NEWLINE SPACE TAB

blankTABSPACEword 是由一个或多个不带引号的元字符分隔的字符序列。一些元字符仅用作某些上下文中的分隔符,如下所述。identifier 是字母、数字、下划线、句点或反引号的序列,以字母、下划线或句点开头。标识符用作符号、变量、dcmd 和 walker 的名称。命令由 NEWLINE 或分号 (;) 分隔。

dcmd 由以下字或元字符之一表示:

/ \ ? = > $character :character ::identifier

由元字符命名或者前缀为单个 $: 的 dcmd 是作为内置运算符提供的,实现与传统 adb(1) 实用程序命令集的完全兼容。解析 dcmd 后,不再将 /\?=>$: 字符识别为元字符,直到参数列表结束。

simple-command 是一个后跟零个或多个空格分隔字序列的 dcmd。将字作为被调用 dcmd 的参数进行传递,算术展开加引号中指定的除外。每个 dcmd 都返回一种退出状态,指示它成功、失败或是通过无效参数调用的。

pipeline 是由 | 分隔的一个或多个简单命令的序列。与 shell 不同,MDB 管道中的 dcmd 不作为单独的进程执行。解析管道后,按从左到右的顺序调用每个 dcmd。按dcmd 管道中所述处理和存储每个 dcmd 的输出。左侧 dcmd 完成后,它的输出经处理后用作管道中下一个 dcmd 的输入。如果任何 dcmd 未返回成功退出状态,则异常中止管道。

expression 是对其求值以计算 64 位无符号整数值的字的序列。对这些字求值使用的是算术展开中所述的规则。