课程概览
目标
如何系统化的调试
使用自动化调试工具
使用一系列试验,进行程序科学调试假设验证
大纲
- 调试如何工作?
- 断言实验
- delta 自动化调试方法
- 程序 bug 如何产生
- 重复错误如何发生,统计调试错误源
- 信息挖掘 :bug 数据库和变更数据库
第一节
序言:深夜调试
- 程序员手工调试的弊端:注意力有限,不集中;花费更多时间以致减少了和陪伴家人的时间;
- 软件工作量占比:测试和调试经常在 50% ~ 75%
- 调试的困难:无法估计
启程
- 处理 HTML 输出文本(tag 模式与有限状态机);
- 简单例子foo:两种状态(tag、text);
- 第一个漏洞,foo:三种状态(tag、text 和 quote)
- 第二个漏洞,”foo“;
- 任意输出变量值调试:时间杀手!任意变更代码调试:混乱杀手!
- 《代码大全》- 历史:魔鬼调试指南;
- 修复调试;糊弄单元调试案例;
- 程序变量的状态 -> defect 感染点 -> 感染点传染 -> 错误;引发感染的情形 -> 调试/测试的 cases;
- 解决:科学假设 -> 预测 -> 试验 -> 渐进式改进假设 —> 理论;
- 假设I:简单测试,输入”foo” -> “bar” -> “”;(因果链)
进度:Udacity公开课:CS259软件调试:01-29 你好断言
未完待续