热身准备
调试是什么
测试就是确认程序是否与规格一致的工作。程序行为与期待行为不一致,就称为BUG,测试就是寻找程序中的BUG的过程。
通过某种方法发现BUG进行修正的过程。
Debug hacks的地图
- 程序异常结束时的对应方法
- 程序不结束时的对应方法
- 内核有问题的现象
调试的心得
复现bug
- 复现BUG:创造条件与产生BUG的环境一致
- 挂载,内核模块等参数、选项
- 网络通信的对方的硬件。
- 磁盘的硬件制造商
- 配置文件的内容
- 试图复现他人发现的BUG时,如果有疑问或需要更多信息,应当总结之后一起问。应当先操作一遍,将问题、疑难事项总结之后再提问。此外,对方可能不告诉你重要信息,因为他觉得跟bug没关系,所以在听取时应当考虑到这一点。
复现之后
- 确认现象,要确认bug现象是否真的复现了
- 确认复现率和时间,bug是100%复现,还是仅在特定时机才会复现。
分析
- 确认现象
- 尽量缩小范围
- 根据内核配置,内核启动参数划分问题
- 根据版本划分问题
- 根据事实做出判断
问题原因不明
- 怀疑硬件问题
- 找找以前改正的同类错误
- 为bug发生做准备,加入打印,记录log等。定期获取内存、网络、I/O、CPU使用率等日志。
- 跟同事讨论
- 咨询社区