在GDB我想watch写入一个内存地址。watch但是,是否可以在写入地址时设置so,而不是中断到命令行,而是打印回溯并继续执行?
您首先为给定变量设置一个监视:
(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”输出中看到的观察点编号。