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

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

许多语言的许多调试器(GDB,Eclipse)实现了STEP_OVER命令,允许一次执行一条语句; 与STEP_INTO的区别在于它不会执行堆栈中的降级(即所谓的函数),这往往是件好事。

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

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


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

链接地址: http://www.djcxy.com/p/59989.html

上一篇: Behaviour of debuggers regarding Step Over + Breakpoints

下一篇: Making your .NET language step correctly in the debugger