微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么在转换为 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 举报,一经查实,本站将立刻删除。