是否有gdb命令来完成循环结构?

时间:2013-02-01 16:46:26

标签: debugging loops gdb walkthrough

在gdb中,我有finish命令可以轻松完成功能框的执行,通常在调试器中遍历代码时,在查看循环的几次迭代后,我想完成循环并继续行走。目前,我通过在循环和continue之后的第一行设置断点来实现这一点,但是,如果有一个简单的gdb命令可以产生相同的效果而不需要休息,那么它会非常方便指出要设置然后清除。

gdb中是否还有完成正在执行的当前循环的执行?

2 个答案:

答案 0 :(得分:26)

  

是否有gdb命令来完成循环结构?

在循环的最后一行执行until,或until NNN其中NNN是循环的最后一行。

(gdb) help until
Execute until the program reaches a source line greater than the current
or a specified location (same args as break command) within the current frame.
  

不需要设置断点并稍后清除。

临时断点会自动清除:

(gdb) help tbreak
Set a temporary breakpoint.
Like "break" except the breakpoint is only temporary,
so it will be deleted when hit.  Equivalent to "break" followed
by using "enable delete" on the breakpoint number.

答案 1 :(得分:5)

gdb不知道循环在哪里结束,所以它不能这样做。我认为你能做的最好的事情是使用advance命令和循环后的位置。