0

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

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

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

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

4

1 回答 1

0

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

于 2012-11-19T22:05:58.680 回答