#include <stdio.h>
typedef struct ThingStruct {
int arr[8];
int after;
} Thing;
void foo(int i) {
Thing thing;
int* ip = &thing.after;
thing.after = 12345;
printf("beforehand\n");
thing.arr[i] = 55;
printf("done\n");
}
int main() {
foo(8);
}
此代码thing.after
因意外超出数组末尾而发生更改。我想尝试thing.after
使用 gdb 找到发生变化的行。所以我用 -g 编译,在第 12 行放一个断点,然后放一个观察点 on thing.after
,但是观察点没有触发,即使在第 14 行放一个断点确实表明thing.after
确实发生了变化。
我什至尝试获取地址thing.after
并在其上设置观察点,但它仍然没有触发。