假设我有一个迭代100次的循环,我想跳过50次迭代,但我想继续从那里按next
以查看每一行。
我不想在循环之后设置断点,因为这样我就会跳过所有迭代,而不仅仅是我想要的数字。
有没有办法在GDB中执行此操作?怎么样?
P.S。我不想从头到尾继续按next
。这很费时间......
答案 0 :(得分:14)
在循环中设置断点,然后调用 c 50 继续50次
5.2继续和步进
继续[ignore-count]
c [ignore-count]
fg [ignore-count]
恢复 程序执行,程序上次停止的地址;任何 绕过设置在该地址的断点。可选参数 ignore-count允许您指定要忽略的更多次 这个地方的断点;它的效果就像忽略一样(见 部分休息条件)。参数ignore-count是有意义的 仅当您的程序因断点而停止时。在其他时间, 继续的论点被忽略了。
答案 1 :(得分:9)
您可以使用条件断点
break <lineno> if i > 50
其中i
是循环索引
答案 2 :(得分:0)
您可以使用条件断点。
语法:
b FileName.extension:lineNumber if varname condition
示例:
b File.c:112 if i == 50
答案 3 :(得分:-5)
例如,在C#中,您可以“继续”跳过迭代。跳过数字3等于0的数字的例子,所以数字3,9,12,15 ...将被跳过。
static void Main(string[] args)
{
for (int i = 1; i <= 50; i++)
{
if (i%3 == 0)
{
continue;
}
Console.WriteLine("{0}", i);
}
Console.ReadLine();
}