调试器关于Step Over + Breakpoints的行为

时间:2012-11-19 21:51:22

标签: debugging

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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