我正在调试看起来像这样的代码:
while (true){
// do something ...
size_t i = foo(); // <- bp set here
if (flag_set) break;
}
// More code follows here ...
我想在 foo() 函数调用处中断,调用它几次,然后完全跳出 while 循环(假设我们保证标志将被设置 - 这样我们就可以跳出循环。
如何完全跳出循环? finish 简单地运行到下一次迭代。我想要做的是退出当前的“代码块”(在本例中为 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();
假设您在第 12 行的原始断点是断点 1,并且在断了几次之后您想跳到第 17 行,您可以键入如下内容:
禁用 1
前进 17
这将禁用断点 1(因此它不会在循环的其余部分被命中)然后继续执行程序直到它命中第 17 行。
关于c++ - 使用 gdb 调试附加进程 - 如何跳出循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5205012/