为什么在转换为 std::array 的值类型时不会触发 GDB 观察点?

问题描述

使用 GDB 10.1,我在 std::array<Data,1024> m_slots 上设置了这样的观察点:

(gdb) print &m_slots[0]
$1 = (std::array<Data,1024>::value_type *) 0xdeadbeef
(gdb) watch *(Data*) 0xdeadbeef

其中 Datastruct。 GDB 可以print sizeof(Data) = 32 并成功设置(硬件)观察点。当为每个字段构造/分配对象时,观察点会触发。当个别字段以其他方式更新时,观察点不会触发。如果我这样做:

(gdb) watch -l m_slots[0]

(gdb) watch *(std::array<Data,1024>::value_type *) 0xdeadbeef

然后观察点在字段更改时触发。在我看来,std::array<Data,1024>::value_type 正好是 Data。为什么行为不同?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...