如何使GDB断点只在断点达到给定次数后才断点?

我有一个函数,被称为一些大量的次数,最终segfaults。

然而,我不想在这个函数设置一个断点,并在每次调用后停止,因为我会在这里多年。

我听说我可以在GDB中为一个断点设置一个计数器,每次断点被命中,计数器递减,只有当计数器= 0时被触发。

这是准确的,如果是这样,我怎么办?请给出用于设置这样的断点的gdb代码。

最佳答案
阅读GDB手册的section 5.1.6。你必须做的是先设置一个断点,然后为该断点号设置一个’忽略计数’,例如。忽略23 1000。

如果你不知道多少次忽略断点,并且不想手动计数,以下可能有助于:

  ignore 23 1000000   # set ignore count very high.

  run                 # the program will SIGSEGV before reaching the ignore count.
                      # Once it stops with SIGSEGV:

  info break 23       # tells you how many times the breakpoint has been hit, 
                      # which is exactly the count you want

转载注明原文:如何使GDB断点只在断点达到给定次数后才断点? - 代码日志