GDB:断点仅在击中其他断点后才会中断

use*_*784 4 gdb

假设我创建了两个断点2和3。断点3位于第10行,该行经常通过程序执行。如何配置3,使其仅在被击中2次后才断裂?

mat*_*att 6

一个简单的例子:

void bp2() { };
void bp1() { bp2(); }

int main()
{
  bp2();
  bp1();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我们可以创建一个仅在通过bp1调用bp2时触发的断点,如下所示:

break bp1
break bp2

commands 1
silent
enable 2
c
end

commands 2
disable 2
end

disable 2
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用便利变量在 gdb 中创建本地状态,例如“set var $bp1hit = 1”和“break bp2 if $bp1hit” (2认同)