gdb命令“until”如何跳过循环?

时间:2017-02-25 13:22:56

标签: linux loops gdb command

我很好奇gdb如何实现“until”命令。

我的意思是,我可以理解“完成”是如何工作的,我们知道在函数的开头和结尾,有代码例程来操作ebp / esp寄存器,所以gdb可以用它来执行函数的结尾

但我的问题是,gdb如何知道循环的结束?如果没有提供调试符号,我们知道循环可能嵌入了另一个内部循环,因此取决于ecx寄存器不是解决方案。那么它如何知道循环的结束? “while”“do / while”和“for”的汇编代码可能不同,不确定是否有“finish”命令可以查找的模式。

希望看到你的解释。

1 个答案:

答案 0 :(得分:1)

  

gdb如何知道循环的结束?

它没有。来自documentation

until
  Continue running until a source line past the current line, in the current stack
  frame, is reached. 

  This command is used to avoid single stepping through a loop more than once.
  It is like the next command, except that when until encounters a jump, it
  automatically continues execution until the program counter is greater
  than the address of the jump.

它的实现与上面的上一个陈述中描述的非常相似。