0

使用 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。为什么行为不同?

4

0 回答 0