next命令
单步执行程序,当 next 命令执行遇到子函数时,不会进入到子函数内,而是将子函数全部执行结束再继续单步执行下面的代码,也就是把整个子函数的执行当作为一行代码来执行。在其他调试器中相当于 step-over,作用是在同一个调用栈中移动到下一个可执行的代码行,调用器不会进入到函数体。如果当前行是函数执行的最后一行则 next 将进入到下一个栈层,并在调用函数的下一行停止。
next 命令格式和使用方式:
next [count]
count 表示单步执行的次数,命令可以缩写为 n,如果在执行 count 次单步执行时,遇到一个断点或者是一个信号,单步执行会停止。实例:
(gdb) next 5
连续执行五次 next 命令。
step命令
单步执行程序,遇到子函数就进入到子函数中继续进行单步执行;在其他调试中相当于 step-into 命令,作用是移动到下一个可执行的代码行。如果当前是一个函数的调用,则调用器进入函数并且停止在函数中的第一行。step 可以帮助我们找到代码具体位置:函数调用和函数本体可能存在不同的文件中。。
step 命令格式和使用方式:
step [count]
count 单步执行的次数。如果在执行 count 次单步执行时,遇到一个断点或者是一个信号,单步执行会停止。实例:
(gdb) step 5
连续执行 5 次 step 命令。
是否跳过不含调试信息的调用函数,需要设置 step-mode。相关命令和使用方式为:
set step-mode [on/off]
系统默认的参数是 off,表示执行 step 命令时跳过不含有调试信息的调用函数。如果参数设置为 on,会在函数功能入口处停止。
显示设置的 step-mode 可以使用命令:
show step-mode
总结:step 命令和 next 命令的区别在于单步执行时遇到调用函数的处理情况,next 会当作一行代码处理,而 step 会进入到函数体中。其他的使用方式相同。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/23648.html