【问题标题】:Hardware watchpoints - how do they work?硬件观察点——它们是如何工作的?
【发布时间】:2011-12-09 23:38:16
【问题描述】:

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

【问题讨论】:

    标签: debugging gdb hardware watchpoint


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您提供的信息。是否有任何可用硬件的支持。我知道那只是在黑暗中开枪。
    • MMU(内存管理单元)硬件 - 通过将页面标记为受保护,您可以在写入该页面时遇到异常 - 这就是硬件辅助观察点的方式工作。如果没有 MMU,您必须在每条指令后暂停并检查所有观察点地址范围 - 这就是软件观察点通常在没有 MMU 的系统(例如小型嵌入式系统)上工作的方式,而且它非常很慢。跨度>
    【解决方案2】:

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

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

    另一个article 硬件断点。

    【讨论】:

      猜你喜欢
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多