c++ GDB在监视地址时打印回溯而不是中断

x4shl7ld  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(170)

在GDB中,我想watch一个被写入的内存地址。但是,有没有可能设置watch,这样当地址被写入时,而不是中断到命令行,我们打印回溯并继续执行?

vshtjzan

vshtjzan1#

首先为给定变量设置监视:

(gdb) watch i

现在,在断点列表中,您将看到手表。

(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       hw watchpoint  keep y                      i

此时,您可以定义在任何断点或监视点执行的断点命令。在您的情况下,您只需要执行“backtrace”和“c”。要定义此命令,请输入commands 1,然后输入在命中监视点时执行的命令列表。例如:

(gdb) commands 1
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>backtrace
>c
>end

“commands”后面的“1”指的是您可以在“info breakpoints”输出中看到的观察点编号。

相关问题