有没有办法在 GDB 中重置断点统计信息?

Is there a way to reset breakpoint stats in GDB?

假设以下 .gdbinit

break foobar
ignore 1 1
run

程序使用gdb --args ./myprogram --argument1 --argument2等启动

现在,当我第一次开始这个时,一切都很好。但是,如果我在 (gdb) 提示符下发出 run 以使用最后已知的命令行重新启动程序,则 ignore 行将不会生效。

道​​理当然很清楚了。第一次我最终得到

(gdb) info break
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x000000000061ea6a in foobar at ../foobar.c:1173
        breakpoint already hit 1 time

任何后续的 运行 都以 breakpoint already hit X time 中 X 显示的任何值开始。当然,该值已经超过 ignore.

设置的限制

如何重置断点上的统计数据或更好,但如何使 run 自动为我执行此操作?

How can I reset the stats on the breakpoints or better yet how can I cause run to do that automatically for me?

一种方法是:

# ~/.gdbinit
break foobar
break main
commands 2
  silent
  ignore 1 1
  continue
end

现在,每次 运行,您都会在 main 上命中静默断点,这会重置 foobar 断点上的忽略计数并继续。