(我正在编写调试器。但我的疑问也是从调试器用户的角度来看的)
许多语言(GDB、Eclipse)的许多调试器都实现了一个 STEP_OVER 命令,该命令允许一次执行一条语句;与 STEP_INTO 的不同之处在于它不执行堆栈(即调用函数)中的降级,这通常是一件好事。
10 : y = f1(x);
11 : z = y + 1;
现在,假设我越过了上面的第 10 行,但是在函数内部遇到了一个断点f1
(可能在调用堆栈深处有好几层)。目前尚不清楚当我恢复时会发生什么:调试器是否应该在第 11 行暂停(有效地“完成单步执行”命令)?还是应该忘记它?我相信大多数(全部?)调试器都是后者。这是标准/预期的行为吗?我自己发现这有点令人沮丧。有没有办法(在某些调试器中)从内部断点恢复执行到外部跨步语句?或者有什么方法可以跳过忽略断点?