step 命令用于单步执行源代码或语句(步入使用 -g 选项编译的调用)。
dbx 环境变量 step_events 控制单步执行过程中是否启用断点。
dbx step_granularity 环境变量控制源代码行单步执行的粒度。
dbx step_abflow 环境变量控制在检测到将要发生“异常”控制流更改时 dbx 是否停止。 调用 siglongjmp() 或 longjmp() 或异常抛出可能会导致出现此类控制流更改。
单步执行一行(步入调用)。对于多线程程序,步过函数调用时,为了避免死锁,会在该函数调用期间隐式恢复所有线程。非活动线程无法单步执行。
单步执行 n 行(步入调用)。
向下单步执行并步出当前函数。
单步执行时传递指定信号。如果该信号存在信号处理程序,并且使用 -g 选项编译了该信号处理程序,则步入该信号处理程序。
单步执行指定线程。不适用于 step up。
单步执行指定 LWP。步过函数时,不隐式恢复所有 LWP。
尝试步入从当前源代码行调用的 function。如果未指定 function,则步入上一个调用的函数,这有助于避免出现过长的 step 命令和 step up 命令序列。例如,上一个函数为:
f()->s()-t()->last();
last(a() + b(c()->d()));
其中:
n 是要单步执行的行数。
signal 是信号名。
thread_id 是线程 ID。
lwp_id 是 LWP ID。
function 是函数名。
只有指定显式 lwp_id 时,通用 step 命令的死锁避免措施才不起作用。
在执行 step to 命令时,如果尝试步入上一个汇编调用指令或步入当前源代码行中的函数(如果指定),则调用可能因条件分支而无法进行。在不执行调用或当前源代码行中没有函数调用的情况下,step to 命令会步过当前源代码行。使用 step to 命令时,需要特别注意用户自定义的运算符。
有关机器级步进信息,另请参见stepi 命令。
单步执行一行(步入调用)。对于多线程程序,步过方法调用时,为了避免死锁,会在该方法调用期间隐式恢复所有线程。非活动线程无法单步执行。
单步执行 n 行(步入调用)。
向下单步执行并步出当前方法。
单步执行指定线程。不适用于 step up。
单步执行指定 LWP。步过方法时,不隐式恢复所有 LWP。