Solaris 模块调试器指南

事件回调

通过 ::evset dcmd 和用于事件跟踪的 dcmd,可以将事件回调与每个事件说明符关联(使用 -c 选项)。事件回调是指用于表示在目标中发生对应事件时要执行的 MDB 命令的字符串。 系统将执行这些命令,就好像已在命令提示符下键入了它们一样。执行每个回调之前,会将 dot 变量设置为代表线程的程序计数器的值,并且将 hits 变量设置为与此说明符匹配的次数(包括当前匹配)。

如果事件回调本身包含一个或多个用于继续执行目标的命令(例如 ::cont::step),则这些命令不会立即继续执行目标并等待其再次停止。 相反,在某个事件回调内,用于继续执行的 dcmd 会注意到继续操作现在处于暂挂状态,然后会立即返回。因此,如果某个事件回调中包含多个 dcmd,则用于单步执行或继续执行的 dcmd 应该是指定的最后一个命令。执行所有事件回调后,如果所有匹配的事件回调都请求继续操作,则目标将立即恢复执行。如果请求的继续操作相冲突,则优先级最高的操作将确定发生的继续类型。优先级从高到低的顺序如下:单步执行、步过(下一个)、步出、继续。