我有一个大约100个奇数值的for循环。我想有一个断点,我可以为iterator变量设置一些值,然后直接继续执行该程序执行状态。
例如
for(int i=0;i<500;i++)
{
doSomething();
}
这里我希望在i=100;
上有一个断点,并一步一步地遍历0到99之间的所有值。这可能在gdb
中,我该怎么做?
答案 0 :(得分:8)
在gdb
中,您可以设置断点的条件。
break line if i == 100
“line”是适当的行号。
答案 1 :(得分:1)
可能有更好的方法,但我做了很多这样的事情:
if (i == 100) {
int breakpoint = 10;
}
答案 2 :(得分:1)
条件断点是仅在某个条件为真时才将控制转移到gdb的断点。
如果在循环的10次迭代之后只需要gdb控制,这将非常有用。
要在断点上设置condition
,请使用condition
命令,其中包含断点编号,后跟触发断点的条件。
以下是设置条件断点的示例,该条件断点仅在“条件(i> = 10)为真时触发”:
(gdb) break 28 # set breakpoint at line 28
(gdb) info break # list breakpoint information
Num Type Disp Enb Address What
1 breakpoint keep y 0x080588a3 in loopit at loops.c:28
(gdb) condition 1 (i >= 10) # set condition on breakpoint 1
(gdb) run (or write `continue` if already running)