oom*_*pah 5 c c++ debugging gdb
我正在调试看起来像这样的代码:
while (true){
// do something ...
size_t i = foo(); // <- bp set here
if (flag_set) break;
}
// More code follows here ...
Run Code Online (Sandbox Code Playgroud)
我想打破foo()函数调用,调用它几次然后完全跳出while循环(假设我们保证标志将被设置 - 所以我们可以突破循环.
如何彻底摆脱循环?完成只是运行到下一次迭代.我想要做的是退出当前的"代码块"(在这种情况下,while循环)
您需要 advance 命令,它采用与 break 命令相同的参数。以您的代码为例(但添加了行号):
10 while (true){
11 // do something ...
12 size_t i = foo(); // <- bp set here
13 if (flag_set) break;
14 }
15
16 // More code follows here ...
17 someFunction();
Run Code Online (Sandbox Code Playgroud)
假设第 12 行上的原始断点是断点 1,在中断几次后您想跳到第 17 行,您可以输入如下内容:
禁用 1
前进 17
这将禁用断点 1(因此在循环的其余部分中不会命中断点),然后继续执行程序,直到到达第 17 行。