continue用于继续运行至下一个断点或程序结束,不单步执行;next逐行执行但跳过函数内部,将函数调用视为原子操作。

continue 适合从断点恢复执行,不是单步
continue 的作用是让程序**继续运行到下一个断点或结束**,它不关心当前在哪一行、有没有函数调用,只看有没有待触发的断点。如果你在某处设了断点并停住了,想跳过中间所有逻辑直接跑到下一个断点,就用 c。误把它当“下一步”用,比如在没设新断点的情况下反复 c,结果就是程序直接跑完退出。
next 是真正的“下一行”,但会跳过函数体
next(简写 n)才是真正用于逐行观察控制流的命令:它执行当前行,然后停在“逻辑上的下一行”——这个“下一行”可能是 if 分支后的语句、循环外的第一行,甚至直接跳到函数调用之后的那一行。关键点在于:next 遇到函数调用时,**整段函数体被当作一个原子操作执行完**,不会进入内部。
- 适合快速过掉标准库函数(如
printf、malloc)或你确定没问题的封装函数 - 不适合调试函数内部逻辑——这时得换
step - 如果当前行是空行或只有注释,
next会自动跳到下一个有效语句行
配合使用的典型场景:先 next 定位可疑区域,再用 continue 跳到下一个断点验证
比如你在函数开头设了断点,想确认某次循环是否执行了第 5 次迭代后进入某个分支:
- 用
n一步步走完前几次循环(避免在循环里反复按n太慢,可改用until) - 走到循环条件判断行时,用
print看变量值,确认第 5 次条件为真 - 此时在目标分支首行设个新断点,再输
c,程序就会直接跑过去停住 - 如果没设新断点就
c,程序大概率直接退出,因为后面没断点了
容易踩的坑:next 后立刻 c,可能跳过你想看的代码
这是新手高频失误:next 执行完某行(比如一个函数调用),光标停在调用之后那行,你以为还在“可控节奏”里,随手敲 c——结果程序一路跑到结尾。根本原因是:你没意识到 next 已经把那个函数内部所有逻辑全执行完了,而 c 又没有新断点约束,自然一泻千里。
真正需要“执行完当前函数再停”的动作,应该用 finish;想“执行到某行再停”,优先 break 行号 + c,而不是依赖 next 后的临时状态。











