在GDB中,我想watch一个被写入的内存地址。但是,有没有可能设置watch,这样当地址被写入时,而不是中断到命令行,我们打印回溯并继续执行?
watch
vshtjzan1#
首先为给定变量设置监视:
(gdb) watch i
现在,在断点列表中,您将看到手表。
(gdb) info breakpoints Num Type Disp Enb Address What 1 hw watchpoint keep y i
此时,您可以定义在任何断点或监视点执行的断点命令。在您的情况下,您只需要执行“backtrace”和“c”。要定义此命令,请输入commands 1,然后输入在命中监视点时执行的命令列表。例如:
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”输出中看到的观察点编号。
1条答案
按热度按时间vshtjzan1#
首先为给定变量设置监视:
现在,在断点列表中,您将看到手表。
此时,您可以定义在任何断点或监视点执行的断点命令。在您的情况下,您只需要执行“backtrace”和“c”。要定义此命令,请输入
commands 1
,然后输入在命中监视点时执行的命令列表。例如:“commands”后面的“1”指的是您可以在“info breakpoints”输出中看到的观察点编号。