6

GDB 观察点如何工作?是否可以实现类似的功能来利用定义位置的字节级访问?

4

2 回答 2

13

在 x86 上,有 CPU 调试寄存器 D0-D3 用于跟踪内存地址。

解释了如何在 Linux 中实现硬件断点,并详细说明使用了哪些处理器特定功能。

一篇关于硬件断点的文章。

于 2013-10-01T06:09:27.067 回答
6

我相信 gdb 使用 MMU 以便将包含监视地址范围的内存页面标记为受保护 - 然后当对受保护页面的写入发生异常时 gdb 处理异常,检查写入的地址是否对应于特定的观察点,然后相应地恢复或下降到 gdb 命令提示符。

您可以使用mprotect为您自己的调试代码或测试工具实现类似的东西,但如果您想要做任何比错误写入失败更复杂的事情,您将需要实现一个异常处理程序。

于 2011-10-18T10:30:55.930 回答