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

问题描述 投票:0回答:2

假设以下情况

.gdbinit

break foobar
ignore 1 1
run

程序使用

gdb --args ./myprogram --argument1 --argument2
等启动。

现在,当我第一次开始时,一切都很好。但是,如果我在

run
提示符下发出
(gdb)
以便使用最后已知的命令行重新启动程序,则
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
自动为我执行此操作?

gdb breakpoints
2个回答
3
投票

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

一种方法是:

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

现在,每次运行时,都会在

main
上遇到静默断点,这会重置
foobar
断点上的忽略计数并继续。


0
投票

在下次跑步之前再次执行“忽略 1 1”似乎可以达到您想要的效果。 Employed Russian 帖子中的命令 2 部分只是使其自动执行。

已经命中的计数似乎在运行之间正确重置。 忽略计数不会与该值进行比较,而只是在将来遇到断点时进行倒数。

如果您执行“ignore 1 1”和“info br”,您应该在第一个断点下看到“ignore next 1 attempts”。

© www.soinside.com 2019 - 2024. All rights reserved.