有没有办法在 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
断点上的忽略计数并继续。
假设以下 .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
断点上的忽略计数并继续。