debugging 硬件观察点-它们如何工作?

2skhul33  于 2022-11-24  发布在  其他
关注(0)|答案(3)|浏览(120)

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

72qzrwbm

72qzrwbm1#

在x86上,存在跟踪存储器地址的CPU调试寄存器D 0-D3。
This解释了如何在Linux中实现硬件断点,还详细介绍了使用的处理器特定功能。
硬件断点上的另一个article

dtcbnfnu

dtcbnfnu2#

我相信gdb使用MMU,以便将包含监视地址范围的内存页面标记为受保护-然后,当写入受保护页面时发生异常时,gdb将处理该异常,检查写入地址是否对应于特定的监视点,然后相应地恢复或转到gdb命令提示符。
您可以使用mprotect为您自己的调试代码或测试工具实现类似的功能,尽管如果您想做任何复杂的事情,而不仅仅是在错误写入时失败,则需要实现一个异常处理程序。

xzabzqsa

xzabzqsa3#

使用MMU或MPU(在其他处理器上如嵌入式),可用于实现“硬件观察点”;然而,一些处理器(例如,许多Arm实现)具有经由调试端口访问的专用观察点硬件。这与使用MMU或MPU相比具有一些优点。
如果使用MMU或MPU方法:

  1. PRO -应用级处理器不需要特殊的硬件,因为MMU是内置的,以支持Linux或Windows的需要。在专用实时级处理器的情况下,通常有MPU。
  2. CON -将有处理异常的软件开销。这对于应用类处理器(例如,x86)可能不是问题;然而,对于嵌入式实时应用程序,这可能意味着灾难。
  3. CON- MMU或MPU故障可能由于其他原因而发生,这意味着处理程序需要通过读取各种状态寄存器来找出它发生故障的确切原因。
  4. PRO -使用MMU内存保护故障通常可以覆盖许多单独的变量,从而很容易地监视许多变量。然而,这通常不是大多数调试情况所必需的。
    如果您使用专用调试观察点硬件,例如Arm支持的硬件:
  5. PRO -对软件性能没有影响(如果调试细微的计时问题,则会有所帮助)。调试基础结构设计为非侵入性。
  6. CON -在任何特定的芯片上,这些硬件单元的数量都是有限的。对于Arm,可能有0、2或4个这样的单元。所以你需要小心选择。这些单元可以覆盖一个地址范围,但也有限制。对于一些处理器,它们什至可能被限制在内存区域。

相关问题