关于struct变量的gdb观察点

Ker*_*onk 6 linux gdb watchpoint

我有这样的结构:

    struct A 
    {
        int a; 
        char b; 
    };
Run Code Online (Sandbox Code Playgroud)

这个结构在大代码中的不同位置被引用.指向此结构的指针将传递给不同的函数,因此更新此结构中的变量.我希望在这个结构中设置变量a的观察点,因为它遍历许多函数.看看如何改变.如何设置此观察点?

sca*_*cai 6

首先设置一个断点,用break创建struct的实例,比如

break myfile.c:9
Run Code Online (Sandbox Code Playgroud)

然后只需使用手表来设置观察点,就像

watch myStructInstance.a
Run Code Online (Sandbox Code Playgroud)

变量a

watch *0x7ffff75177f0
Run Code Online (Sandbox Code Playgroud)

用于存储器地址.存储器地址可以容易地通过使用能够得到印刷,像

print &myStructInstance.a
Run Code Online (Sandbox Code Playgroud)

现在,每当变量a或给定的内存地址被修改时,gdb就会中断.