在x86上,GDB使用一些特殊的硬件资源(调试寄存器?)来设置观察点。在某些情况下,当这些资源不足时,GDB将设置观察点,但它不起作用。 有没有什么办法可以以编程方式监视Linux上这些资源的可用性?也许在procfs中有些信息,或者其他的东西。我需要这些信息来选择池中的机器进行调试。如何监控在gdb中设置观察点所需的资源?
从GDB内幕: “,因为它们依赖于硬件资源,硬件断点可能数量有限;当用户要求更多,GDB会开始尝试设置软件断点(在一些体系,尤其是。在32位x86平台上,gdb并不总是知道是否有足够的硬件资源来插入所有的硬件断点和观察点,在这些平台上,只有在被调试的程序正在被调试的时候,gdb才会打印出错误消息。)“
”请求许多不同的观察点(在某些体系结构中,只有在调试程序恢复后才能检测到这种情况)。请注意,x86调试寄存器既用于h ardware断点和观察点,因此设置太多的硬件断点可能会导致观察点插入失败。“ “
”32位Intel x86处理器具有特别的调试寄存器,旨在便于调试。gdb提供了一个基于x86的端口可用来实现对观察点和硬件辅助断点支持功能的通用库。