我正在寻找的是这样的 -
Set Breakpoint 1
Set Breakpoint 2
Disable Breakpoint 2
Set dbg_counter to 0
Increment dbg_counter everytime Breakpoint 1 is reached
If dbg_counter > 100:
Enable (once) Breakpoint 2
Set dbg_counter to 0
Run Code Online (Sandbox Code Playgroud)
请注意'dbg_counter'是一个只有调试器知道的变量(即不是被调试程序的一部分).
来自https://sourceware.org/gdb/current/onlinedocs/gdb/Convenience-Vars.html:
GDB提供了便利变量,您可以在GDB中使用它来保留一个值并在以后引用它.这些变量完全存在于GDB中; 它们不属于您的程序,设置便利变量对程序的进一步执行没有直接影响.
可以使用便捷变量和断点条件来忽略断点一定次数.但是有一种更简单的方法可以做到这一点.来自https://sourceware.org/gdb/current/onlinedocs/gdb/Conditions.html:
断点条件的特殊情况是仅在断点达到特定次数时才停止.这非常有用,有一种特殊的方法可以使用断点的忽略计数.每个断点都有一个忽略计数,它是一个整数.大多数情况下,忽略计数为零,因此无效.但是如果你的程序到达一个忽略计数为正的断点,那么它只是将忽略计数减1并继续,而不是停止.因此,如果忽略计数值为n,则断点不会在程序到达n次时停止.