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

Wil*_*mKF 25 debugging gdb loops walkthrough

在gdb中,我有一个finish命令可以轻松地完成一个函数框的执行,通常在调试器中遍历代码时,在查看循环的几次迭代之后,我想完成循环并继续在它之后行走.目前,我通过在循环后的第一行设置断点来实现这一点continue,但是,如果有一个简单的gdb命令具有相同的效果但不需要设置断点,那么它将非常方便.后来清理了.

无论如何在gdb中完成正在执行的当前循环的执行?

Emp*_*ian 28

是否有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.
Run Code Online (Sandbox Code Playgroud)

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

临时断点自动清除:

(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.
Run Code Online (Sandbox Code Playgroud)

  • 那么`until`和`advance`之间的区别是什么? (5认同)
  • @Jester“此命令与直到相似,但是前进不会跳过递归函数调用,并且目标位置不必与当前位置在同一帧中。” https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html (2认同)

Jes*_*ter 6

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