gpt4 book ai didi

GDB 硬件观察点非常慢 - 为什么?

转载 作者:行者123 更新时间:2023-12-02 04:25:34 26 4
gpt4 key购买 nike

在大型 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

最佳答案

我发现观看大字符缓冲区非常慢,而观看该缓冲区中的字符则非常快。

例如

static char buf[1024];
static char* buf_address = &buf;

watch buf_address - 慢得令人难以忍受。

观看 *buf_address - 非常快。

关于GDB 硬件观察点非常慢 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2446116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com