trace 命令用于显示执行的源代码行、函数调用或变量更改。
可使用 dbx 环境变量 trace_speed 设置跟踪速度。
如果 dbx 处于 Java 模式下,而您要在本地代码中设置 trace 断点,请使用 joff 命令(请参见joff 命令)切换到本地模式,或为 trace 命令添加前缀 native(请参见native 命令)。
如果 dbx 处于 JNI 模式下,而您要在 Java 代码中设置 trace 断点,请为 trace 命令添加前缀 java(请参见java 命令)。
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 时才删除断点。
创建禁用状态的断点。
有关所有事件的列表和语法,请参见设置事件规范。