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

where 命令

where 命令用于输出调用栈。对于 OpenMP 从属线程,如果相关帧仍处于活动状态,该命令还会输出主线程的栈跟踪。

本地模式语法

where

输出过程回溯。

where number

输出回溯中顶部的 number 帧。

where -f number

从第 number 帧开始回溯。

where -fp address_expression

认为 fp 寄存器中有 address_expression 值,并输出回溯。

where -h

包括隐藏的帧。

where -l

包括库名和函数名。

where -q

快速回溯(仅限于函数名)。

where -v

冗余回溯(包括函数参数和行信息)。

其中:

number 是调用栈帧数。

上述任一形式都可以与线程 ID 或 LWP ID 一起使用,以便获得指定实体的回溯。

fp(帧指针)寄存器已损坏时(在这种情况下,dbx 无法正常重建调用栈),-fp 选项很有用。此选项为测试某值是否为正确的 fp 寄存器值提供了方便。一旦确定了此值为正确的值,就可以使用 assign 命令或 lwp 命令对其进行设置。

Java 模式语法

where [thread_id]

输出方法回溯。

where [thread_id] number

输出回溯中顶部的 number 帧。

where -f [thread_id] number

从第 number 帧开始回溯。

where -q [thread_id]

快速回溯(仅限于方法名)。

where -v [thread_id]

冗余回溯(包括方法参数和行信息)。

其中:

number 是调用栈帧数。

thread_iddbx 样式的线程 ID 或为线程指定的 Java 线程名。