
一起动脑筋 · 先看一个小故事
女孩让计分器从 3 加到 5,屏幕却显示 1。机器人建议先找“第一步不一样”的地方。
把过程摊开来看
- 预期3 加 2 得 5
- 实际程序做了减法
- 定位检查更新分数的语句
- 修复改后重新测试
Bug 是程序中的缺陷,可能使结果错误,也可能让程序无法运行。
调试时先写下预期,再观察每一步。越早找到偏离预期的位置,越容易理解原因。
01Bug 到底是什么?
Bug 通常指程序中的缺陷或错误,使程序出现不符合预期的行为。
02程序会有哪些错误?
编译问题
代码不符合语言规则。
运行错误
运行中出现异常或非法操作。
逻辑错误
程序能运行,但答案不对。
边界问题
只在特殊输入下出错。
03编译错误是什么?
int x = 10
std::cout << x;第一行漏了分号,编译器会报告错误。错误行号是线索,真正原因有时在前一行。
04运行错误是什么?
程序已经启动,但运行过程中出现问题,例如非法内存访问、资源不足等。
05逻辑错误为什么最难发现?
if (score > 60) {
std::cout << "及格";
}如果规则是“60 分也及格”,这里应该写 >= 60。程序能编译、能运行,但规则写错了。
06调试是在做什么?
复现问题→观察和定位→修复并验证
调试不是随便改代码,而是用证据一步步缩小问题。
07怎样减少 Bug?
小步编写
一次增加少量逻辑。
及时测试
不要等全部写完。
测试边界
考虑 0、1、最大值等。
读懂报错
错误信息往往有关键线索。
你已经知道了什么
- Bug 是程序中的缺陷或错误。
- 常见问题包括编译错误、运行错误、逻辑错误和边界问题。
- 能编译通过不代表程序一定正确或安全。
- 调试要复现、观察、定位、修复并验证。
- 良好的测试习惯能明显减少 Bug。
轮到你来试一试
把错误改好后,只看代码就结束,还是再跑一次?为什么?
想好了吗?点开看解释
再运行已失败的例子,并补上相关边界例子。这样能确认错误确实修好,也能发现修改引入的新问题。