GDB 在查看地址时打印回溯而不是中断

use*_*112 7 c++ debugging gdb

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

fra*_*sco 4

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

(gdb) watch i
Run Code Online (Sandbox Code Playgroud)

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

(gdb) info breakpoints
Num     Type           Disp Enb Address            What
1       hw watchpoint  keep y                      i
Run Code Online (Sandbox Code Playgroud)

此时,您可以定义要在任何断点或观察点处执行的断点命令。在你的情况下,你只想执行“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
Run Code Online (Sandbox Code Playgroud)

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