gdb 中step,next与finish的区别

Posted J1ac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gdb 中step,next与finish的区别相关的知识,希望对你有一定的参考价值。

step 就是单步执行,遇到子函数就进入并且继续单步执行;在其他调试其中相当于step-into命令,作用是移动到下一个可执行的代码行。如果当前行是一个函数调用,则调试器进入函数并停止在函数体的第一行。step可以帮助初步揭开代码位置的谜团,例如:函数调用和函数本身可能在不同的文件中。


next 是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。在其他调试器中相当于step-over,作用是在同一个调用栈层中移动到下一个可执行的代码行。调试器不会进入函数体。如果当前行是函数的最后一行,则,next将进入下一个栈层,并在调用函数的下一行停止。


finish就是但单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数。在其他调试器中相当于step-out,作用是在栈中前进到到下一层,并在调用函数的下一行停止。

 

参考:http://blog.sina.com.cn/s/blog_74d0ff140101dfv6.html



以上是关于gdb 中step,next与finish的区别的主要内容,如果未能解决你的问题,请参考以下文章

gdb中一些常用的调试命令

GDB主要命令

可以从gdb中的finish返回值与执行中的实际值不同

GDB 基本用法

如何在GDB中调试多线程程序时一次继续一个线程?

linux用gdb调试遇到函数调用怎么办?