以下是涉及访问或更改内存地址内容的事件的事件规范。
访问了由 address-expression 指定的内存。
mode 指定内存访问模式。可由以下一个或所有字母组成:
已读取指定地址处的内存。
已写入内存。
已执行内存。
mode 还可以包含以下任一项:
访问后停止进程(缺省值)。
访问前停止进程。
在这两种情况下,程序计数器都将指向违例指令。“之前”和“之后”都具有副作用。
address-expression 是求值结果为地址的任何表达式。如果提供符号表达式,则会自动推导出要监视的区域大小;可以通过指定 byte-size-expression 将其覆盖。也可以使用非符号、无类型地址表达式,在这种情况下,必须提供大小。例如:
stop access w 0x5678, sizeof(Complex) |
access 命令有一个限制,即任何两个匹配区都不能重叠。
access 事件规范取代了 modify 事件规范
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 值的更改时会触发其他事件。
由 condition-expression 表示的条件的求值结果为 true。可以为 condition-expression 指定任何表达式,但其求值结果必须为整型。cond 事件大致等效于:
stop step -if conditional_expression