Memory 如何使用gdb检查谁访问特征矩阵的内存?

Memory 如何使用gdb检查谁访问特征矩阵的内存?,memory,gdb,eigen,Memory,Gdb,Eigen,假设我的类有一个成员Eigen::Matrix alpha; 如何从gdb检查函数在其空间中写入的内容。 从Eigen中,我可以使用alpha.data获得它的地址,它应该存储在这个地址之后的100(双)字节中。 如果包含数据的数组是静态的,GDB应该能够找出数组的大小,因此watch alpha.data应该在数组中的任何值发生变化时告诉您。但是,如果数据是指针,watch alpha.data将告诉您指针何时更改,而不是数组中的数据何时更改,这不是很有用。然后您需要手动告诉GDB监视您的阵列

假设我的类有一个成员Eigen::Matrix alpha; 如何从gdb检查函数在其空间中写入的内容。 从Eigen中,我可以使用alpha.data获得它的地址,它应该存储在这个地址之后的100(双)字节中。

如果包含数据的数组是静态的,GDB应该能够找出数组的大小,因此
watch alpha.data
应该在数组中的任何值发生变化时告诉您。但是,如果数据是指针,
watch alpha.data
将告诉您指针何时更改,而不是数组中的数据何时更改,这不是很有用。然后您需要手动告诉GDB监视您的阵列所占用的区域:
watch(double[100])*alpha.data

如果包含数据的数组是静态的,GDB应该能够找出数组的大小,因此
watch alpha.data
应该在数组中的任何值发生变化时告诉您。但是,如果数据是指针,
watch alpha.data
将告诉您指针何时更改,而不是数组中的数据何时更改,这不是很有用。然后您需要手动告诉GDB监视您的数组所占用的区域:
watch(double[100])*alpha.data