我有一个大约 100 个奇数值的 for 循环。我想要一个断点,我可以在其中为迭代器变量设置一些值,然后直接进入该程序执行状态。
例如
for(int i=0;i<500;i++)
{
doSomething();
}
在这里,我想设置一个断点i=100;
并一次性遍历从 0 到 99 的所有值。这可能gdb
吗?我该怎么做?
您可以在gdb
断点上设置条件。
break line if i == 100
其中“line”是适当的行号。
可能有更好的方法,但我从做这样的事情中获得了很多里程:
if (i == 100) {
int breakpoint = 10;
}
条件断点是仅在某个条件为真时才将控制权转移到 gdb 的断点。
当您在循环 10 次迭代后只想要 gdb 控制时,这可能很有用。
要condition
在断点上设置 a,请使用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)