你可以把观察点:
watch x
Run Code Online (Sandbox Code Playgroud)
这将在x修改后中断. x可以是任何类型的变量.如果你有:
class A;
A x;
Run Code Online (Sandbox Code Playgroud)
每当修改x时,gdb就会中断.
实际上,你可以在任何表达式上放置一个观察点,当表达式发生变化时,gdb就会中断.但是要小心,因为如果表达式不是底层硬件支持的,那么gdb必须在每条指令之后对它进行评估,这会导致糟糕的性能.例如,如果A上面是一个包含许多成员的类,那么gdb 可以监视整个实例x,但它的工作方式是:
x已更改当然,这很慢.如果x是,int那么gdb可以使用硬件断点.
如果您有特定的内存地址,也可以观看它:
watch *0x1234
Run Code Online (Sandbox Code Playgroud)
当[0x1234]的内容发生变化时,这将中断.
您还可以使用设置读取断点rwatch,或awatch设置读/写断点.