在大型 C 应用程序中,我在内存地址上设置了硬件观察点,如下所示:
(gdb) watch *0x12F5D58
Hardware watchpoint 3: *0x12F5D58
如您所见,它是一个硬件观察点,而不是软件,这可以解释缓慢。
现在调试器下的应用程序运行时间已从不到十秒变为一小时并且还在增加。到目前为止,观察点已经触发了 3 次,第一次是在 15 分钟后,当包含地址的内存页被sbrk
. 由于内存页面不可访问,在这 15 分钟内,观察点肯定应该是有效的吗?这仍然无法解释,为什么之后速度如此之慢。
平台为 x86_64,GDB 版本为 Ubuntu 9.10 包:
$ gdb --version
GNU gdb (GDB) 7.0-ubuntu
[...]
并从以下来源构建 GDB 7.1:
$ gdb-7.1 --version
GNU gdb (GDB) 7.1
提前感谢您提供任何可能的原因或如何解决/解决它的想法。
编辑:移除演员表
编辑:gdb 7.1