如何有效地实现调试器断点?

ski*_*ppy 5 debugging implementation

有时我会在代码中的不同位置累积来自不同调试会话的大量断点.调试器如何有效地知道何时停止断点?它不可能在每一行都停止检查行号和源文件名与潜在的长断点列表,可以吗?

这是Eclipse中的Java调试器,但我认为这个问题适用于任何调试器.

小智 7

许多调试器中使用的策略(我不了解Eclipse)是在断点处将代码放入代码中,这实际上是一个子程序调用或系统调用.跳转到的代码具有断点信息,并执行任何打印或接受用户命令,并且还具有被补丁覆盖的代码,以便可以执行代码以使执行与原始代码匹配,而不使用断点

  • 甚至不一定是电话.在可能的情况下,使用引发调试器处理的中断的指令覆盖. (2认同)

use*_*876 5

添加到Nadreck的好答案:

有一篇文章在这里有更多的细节,包括一些更奇特的东西(在x86具体的操作码,硬件断点).