假设我有一个将迭代 100 次的循环,我想跳过 50 次迭代,但我想继续按
next
以查看每一行。
我不想在循环后设置断点,因为这样我将跳过所有迭代,而不仅仅是我想要的数字。
GDB 有办法做到这一点吗?怎么办?
附注我不想从头到尾一直按
next
。很费时间...
在循环中设置断点然后调用c 50继续50次
5.2 继续和步进
继续[忽略计数]
c [忽略计数]
fg [忽略计数]
恢复 程序执行,在程序最后停止的地址;任何 在该地址设置的断点将被绕过。可选参数 ignore-count 允许您指定进一步忽略的次数 在此位置设置断点;它的效果类似于忽略(参见 部分中断条件)。参数ignore-count是有意义的 仅当您的程序由于断点而停止时。其他时候, 继续的参数被忽略。
您可以使用条件断点
break <lineno> if i > 50
其中
i
是循环索引
可以使用条件断点。
语法:
b FileName.extension:lineNumber if varname condition
示例:
b File.c:112 if i == 50
您可以使用用户自定义命令
touch nnext
vim nnext
define nnext
set $count = $arg0
while $count > 0
next
set $count = $count - 1
end
end
gdb> source nnext
gdb> nnext 10
例如,在 C# 中,您可以执行“继续”来跳过迭代。跳过 mod 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();
}