【问题标题】:Behaviour of debuggers regarding Step Over + Breakpoints调试器关于 Step Over + Breakpoints 的行为
【发布时间】:2012-11-07 21:53:38
【问题描述】:

(我正在编写调试器。但我的疑问也是从调试器用户的角度来看的)

许多语言(GDB、Eclipse)的许多调试器都实现了允许一次执行一条语句的 STEP_OVER 命令;与 STEP_INTO 的不同之处在于它不执行堆栈中的降级(即,调用函数),这通常是一件好事。

 10  : y = f1(x);
 11  : z = y + 1;

现在,假设我越过了上面的第 10 行,但是在函数 f1 内遇到了一个断点(可能在调用堆栈的深处有好几层)。不清楚当我恢复时会发生什么:调试器是否应该在第 11 行暂停(实际上是“完成单步执行”命令)?还是应该忘记它?我相信大多数(全部?)调试器都是后者。这是标准/预期的行为吗?我自己发现这有点令人沮丧。有没有办法(在某些调试器中)从内部断点恢复执行到外部跨步语句?或者有什么方法可以忽略断点?

【问题讨论】:

    标签: debugging


    【解决方案1】:

    WinDbg 是后者,我相信这是标准行为。如果您担心在单步命令期间出现不同的断点,您总是可以在第 11 行手动设置断点并继续运行,直到第 11 行被命中。或者,您可以暂时禁用其他断点,但请注意调试器仍可能因其他原因(例如引发异常)而中断,具体取决于其配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-04
      • 2013-01-05
      • 2019-07-15
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多