如何在GDB中跳过循环的多次迭代?

时间:2014-12-09 20:59:58

标签: c debugging loops for-loop gdb

假设我有一个迭代100次的循环,我想跳过50次迭代,但我想继续从那里按next以查看每一行。

我不想在循环之后设置断点,因为这样我就会跳过所有迭代,而不仅仅是我想要的数字。

有没有办法在GDB中执行此操作?怎么样?

P.S。我不想从头到尾继续按next。这很费时间......

4 个答案:

答案 0 :(得分:14)

在循环中设置断点,然后调用 c 50 继续50次

Debugging with GDB

  

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();
    }