当监视地址时,GDB如何打印回溯信息而不是中断?

7
在 GDB 中,我想要 watch 一个内存地址的写入。但是,是否可以设置 watch,使在该地址被写入时,不会中断到命令行而是打印回溯信息并继续执行?
在 GDB 中,我想要 watch 一个内存地址的写入。但是,是否可以设置 watch,使在该地址被写入时,不会中断到命令行,而是打印回溯信息并继续执行?

4
为监视点添加包含“continue”的命令 - ssbssa
1个回答

4

首先,您需要对给定变量设置一个观察器:

(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" 输出中可以看到的观察点编号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接