在x86上有CPU调试寄存器D0-D3,用于跟踪存储器地址。
This解释了如何在Linux中实现硬件断点,并详细介绍了使用的处理器特定功能。
硬件断点上的另一个article。
我相信gdb使用MMU,以便包含监视地址范围的内存页面被标记为受保护 - 然后当写入受保护页面时发生异常gdb处理异常,检查写入的地址是否对应到特定的观察点,然后相应地恢复或下降到gdb命令提示符。
您可以使用mprotect为您自己的调试代码或测试工具实现类似的功能,但如果您想要执行更复杂的操作而不是在写错时失败,则需要实现异常处理程序。 / p>