trace 命令的通用语法如下:
trace event_specification [modifier]
发生指定事件时,跟踪即被输出。
下列特定语法在本地模式中有效:
将所有跟踪输出定向到指定的 file_name。要将跟踪输出还原为标准输出,请用 - 表示 file_name。跟踪输出始终附加到 file_name 后面。每当显示 dbx 提示以及应用程序退出时都会刷新。在执行新的运行或连接后继续运行时总是会重新打开 file_name。
跟踪每个源代码行、函数调用并返回。
跟踪指定 function 中每个源代码行。
跟踪指定源码行 line。
跟踪对指定 function 的调用及其返回。
跟踪对 file_name 中所有函数的调用及其返回。
跟踪对所有名为 function 的成员函数的调用。
调用任何名为 function 的函数时跟踪。
跟踪对所有 class 的成员函数的调用。
跟踪对 variable 的更改。
其中:
file_name 是跟踪输出要发送到的文件的名称。
function 是函数名。
line_number 是源代码行的编号。
class 是类名。
variable 是变量名。
下列修饰符在本地模式中有效。
只有在 condition_expression 的求值结果为 true 时,才会发生指定的事件。
只有在 function 中发生指定的事件时,执行才会停止。
从 0 开始,每次发生事件时,计数器的计数便会增加。达到 number 时,执行便停止,且计数器重置为 0。
从 0 开始,每次发生事件时,计数器的计数便会增加。执行没有停止。
创建发生事件时会删除的临时断点。
创建禁用状态的断点。
执行指令级变量。例如,step 变为指令级单步执行,而 at 使用文本地址而不是行号作为参数。
使相应事件在 debug 中保持持久性。有些事件(如断点)不适合保持持久性。delete all 不会删除持久性的处理程序,可使用 delete hid。
通过 status 命令隐藏事件。一些导入模块可能会选择使用它。可使用 status -h 查看它们。
只有在给定的 LWP 中发生指定的事件时,执行才会停止。
只有在给定的线程中发生指定的事件时,执行才会停止。
下列特定语法在 Java 模式中有效。
将所有跟踪输出定向到指定的 file_name。要将跟踪输出还原为标准输出,请使用 - 表示 file_name。跟踪输出始终附加到 file_name 后面。每当显示 dbx 提示以及应用程序退出时都会刷新。在执行新的运行或连接后继续运行时总是会重新打开 file_name。
跟踪 line_number。
跟踪指定的源码 file_name.line_number。
跟踪对 class_name.method_name 的调用及其返回。
跟踪对 class_name.method_name([parameters]) 的调用及其返回。
在调用任何名为 class_name.method_name 的方法时跟踪。
在调用任何名为 class_name.method_name [(parameters)] 的方法时跟踪。
其中:
class_name 是 Java 类的名称,可以使用包路径(使用句点 (.) 作为限定符,例如 test1.extra.T1.Inner),也可以使用完整路径名(前面加磅符号 (#),并使用斜线 (/) 和美元符号 ($) 作为限定符,例如 #test1/extra/T1$Inner)。如果使用 $ 限定符,请使用引号将 class_name 引起来。
file_name 是文件名。
line_number 是源代码行的编号。
method_name 是 Java 方法的名称。
parameters 是方法的参数。
下列修饰符在 Java 模式中有效。
只有在 condition_expression 的求值求值结果为 true 时,才会发生指定事件并输出跟踪。
从 0 开始,每次发生事件时,计数器的计数便会增加。达到 number 时,便输出跟踪,且计数器重置为 0。
从 0 开始,每次发生事件时,计数器的计数便会增加。执行没有停止。
创建发生了事件且输出了跟踪时会删除的临时断点。如果 -temp 与 -count 一起使用,则仅当计数器重置为 0 时才删除断点。
创建禁用状态的断点。
有关所有事件的列表和语法,请参见设置事件规范。