如何使 GDB 断点仅在到达给定次数后才中断?
我有一个被多次调用的函数,最终出现段错误。
但是,我不想在这个函数上设置断点并在每次调用它后停止,因为我将在这里工作很多年。
我听说我可以在 GDB 中为断点设置一个计数器,每次命中断点时,计数器都会递减,并且只有在计数器达到断点时才会触发= 0。
这准确吗?如果准确,我该怎么做?请给出设置此类断点的 gdb 代码。
I have a function that is called some large number of times, and eventually segfaults.
However, I don't want to set a breakpoint at this function and stop after every time it's called, because I will be here for years.
I've heard that I can set a counter
in GDB for a breakpoint, and each time the breakpoint is hit, the counter is decremented, and only gets triggered when the counter
= 0.
Is this accurate, and if so how do I do it? Please give the gdb code for setting such a breakpoint.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
阅读 GDB 手册的第 5.1.6 节。您要做的就是首先设置一个断点,然后为该断点编号设置一个“忽略计数”,例如
ignore 23 1000
。如果您不知道要忽略断点多少次,并且不想手动计数,以下内容可能会有所帮助:
Read section 5.1.6 of the GDB manual. What you have to do is first set a breakpoint, then set an 'ignore count' for that breakpoint number, e.g.
ignore 23 1000
.If you don't know how many times to ignore the breakpoint, and don't want to count manually, the following may help:
继续
这是一种方便的方法,可以跳过最后一个命中断点
n - 1
次(因此在第 n 个处停止) hit):main.c
用法:
GDB 会话:
continue <n>
This is a convenient method that skips the last hit breakpoint
n - 1
times (and therefore stops at the n-th hit):main.c
Usage:
GDB session: