Oracle Solaris Studio 12.2:使用 dbx 调试程序

数据更改事件规范

以下是涉及访问或更改内存地址内容的事件的事件规范。

access mode address-expression [, byte-size-expression ]

访问了由 address-expression 指定的内存。

mode 指定内存访问模式。可由以下一个或所有字母组成:

r

已读取指定地址处的内存。

w

已写入内存。

x

已执行内存。

mode 还可以包含以下任一项:

a

访问后停止进程(缺省值)。

b

访问前停止进程。

在这两种情况下,程序计数器都将指向违例指令。“之前”和“之后”都具有副作用。

address-expression 是求值结果为地址的任何表达式。如果提供符号表达式,则会自动推导出要监视的区域大小;可以通过指定 byte-size-expression 将其覆盖。也可以使用非符号、无类型地址表达式,在这种情况下,必须提供大小。例如:


stop access w 0x5678, sizeof(Complex)

access 命令有一个限制,即任何两个匹配区都不能重叠。


注 –

access 事件规范取代了 modify 事件规范


change variable

variable 的值已更改。change 事件大致等效于:


when step { if [ $last_value !=$[variable]] 
            then
                 stop
            else
                 last_value=$[variable]
            fi
          }

此事件使用单步执行来执行。要提高速度,可使用 access 事件(请参见access mode address-expression [, byte-size-expression ])。

即使未检测到更改,第一次检查 variable 时也会触发一个事件。这第一个事件是访问 variable 的初始值。以后检测到 variable 值的更改时会触发其他事件。

cond condition-expression

condition-expression 表示的条件的求值结果为 true。可以为 condition-expression 指定任何表达式,但其求值结果必须为整型。cond 事件大致等效于:

stop step -if conditional_expression