前因
今天遇到了一个问题,c++编程解决问题时不能正确输出,于是我想使用断点调试来找出问题所在。此前很少使用断点调试,对于调试的几个按钮仅仅认为向下的箭头是向下运行一步、向上的箭头是回退一步、方框是退出调试。
于是:出现
(1)

本应长度为3的数组b却是std::vector of length -1198221809, capacity 2069355498。
继续点击向下的箭头;结果在几个头文件中来回转跳
(2)

回退到(1)的状态,再点击step over符号,数组b的长度恢复正常:
(3)

不知道其中原因,我查了下断点用法。
断点使用
| 操作 | 描述 |
|---|---|
| 继续 / 暂停 F5 | 继续:恢复程序/脚本的正常执行(直到下一个断点)。 暂停:检查当前行正在执行的代码并逐行进行调试。 |
| 单步跳过 F10 | 将下一行代码作为一个整体执行,而不进入该方法的内部步骤。 |
| 单步调试 F11 | 进入下一行代码的方法,以便逐行跟踪其执行过程。 |
| 单步跳出 Shift+F11 | 在方法或子程序内部时,完成当前方法的剩余行并返回到之前的执行上下文,就像将其作为一个命令执行一样。 |
| 重启 Ctrl+Shift+F5 | 终止当前程序执行并使用当前的运行配置再次开始调试。 |
| 停止 Shift+F5 | 终止当前程序执行。 |
单步调试: 进入下一行代码的方法,以便逐行跟踪其执行过程。意思是说要把最基础的编译文件显示出来,单步跳过封装了执行单步调试的所有过程,可以一直按 F11 达到 F10 所完成的任务。
之前以为按f11是在几个头文件中来回转跳,其实不是。
参考