调试器关于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