是否有允许断点编程的C调试器?

是否有允许断点编程的C调试器?,c,gdb,C,Gdb,我要找的是这样的东西- 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 请注意,“dbg_counter”是一个只有调试器知

我要找的是这样的东西-

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
请注意,“dbg_counter”是一个只有调试器知道的变量(即,不属于正在调试的程序的一部分)。

来自:

GDB提供了方便的变量,您可以在GDB中使用这些变量来保存这些变量 上的值,并在以后引用它。这些变量完全存在 GDB内部;它们不是您程序的一部分,并且设置 便利性变量对您的应用程序的进一步执行没有直接影响 节目

方便变量可与断点条件一起使用,以忽略断点一定次数。但有一种更简单的方法可以做到这一点。发件人:

断点条件的一种特殊情况是仅当 断点已达到一定次数。这是真的 有用的是,有一种特殊的方法可以做到这一点,使用 断点。每个断点都有一个忽略计数,这是一个 整数。大多数情况下,忽略计数为零,因此 没有效果。但是如果您的程序到达一个忽略计数的断点 是正的,那么它不是停止,而是减少忽略 数一,然后继续。因此,如果忽略计数值为 n、 断点不会在接下来的n次程序到达时停止 它


根据@Thomas Padron McCarthy提供的关于我的问题的信息,我能够想出以下GDB来解决我的问题-

break file.c:20
break file.c:35
disable 2
set $dbg_count = 0
commands 1
set $dbg_count += 1
if $dbg_count > 100 
enable once 2
set $dbg_count = 0
end
end
run

没有得到。到底是什么问题?我会使用gdb。我不确定它是否允许创建自己的变量,但您始终可以调用
malloc
,并为
dbg\u计数器分配一些内存。设置一个断点,右键单击它,选择条件并写入所需的条件。完成。@Jayesh-我想根据调试器环境中定义的变量有条件地启用/禁用断点。谢谢,我不知道“方便变量”;这有帮助。我知道“忽略计数”,但它对我没有用处,因为我没有忽略计数的先验知识(因为断点1是有条件的)。