Sun Studio 12:使用 dbx 调试程序

本地模式语法

下列特定语法在本地模式中有效:

trace -file file_name

将所有跟踪输出定向到指定的 file_name。要将跟踪输出还原为标准输出,请用 - 表示 file_name。跟踪输出始终附加到 file_name 后面。每当显示 dbx 提示以及应用程序退出时都会刷新。在执行新的运行或连接后继续运行时总是会重新打开 file_name

trace step

跟踪每个源代码行、函数调用并返回。

trace next -in function

跟踪指定 function 中每个源代码行。

trace at line_number

跟踪指定源码行 line

trace in function

跟踪对指定 function 的调用及其返回。

trace inmember function

跟踪对所有名为 function 的成员函数的调用。

trace infunction function

调用任何名为 function 的函数时跟踪。

trace inclass class

跟踪对所有 class 的成员函数的调用。

trace change variable

跟踪对 variable 的更改。

其中:

file_name 是跟踪输出要发送到的文件的名称。

function 是函数名。

line_number 是源代码行的编号。

class 是类名。

variable 是变量名。

下列修饰符在本地模式中有效。

-if condition_expression

只有在 condition_expression 的求值结果为 true 时,才会发生指定的事件。

-in function

只有在 function 中发生指定的事件时,执行才会停止。

-count number

从 0 开始,每次发生事件时,计数器的计数便会增加。达到 number 时,执行便停止,且计数器重置为 0。

-count infinity

从 0 开始,每次发生事件时,计数器的计数便会增加。执行没有停止。

-temp

创建发生事件时会删除的临时断点。

-disable

创建禁用状态的断点。

-instr

执行指令级变量。例如,step 变为指令级单步执行,而 at 使用文本地址而不是行号作为参数。

-perm

使相应事件在 debug 中保持持久性。有些事件(如断点)不适合保持持久性。delete all 不会删除持久性的处理程序,可使用 delete hid

-hidden

通过 status 命令隐藏事件。一些导入模块可能会选择使用它。可使用 status -h 查看它们。

-lwp lwpid

只有在给定的 LWP 中发生指定的事件时,执行才会停止。

-thread thread_id

只有在给定的线程中发生指定的事件时,执行才会停止。