问题描述
使用 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
其中 Data
是 struct
。 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 (将#修改为@)