材料:Debugging book、fuzzing book、David J. Agans《Debugging: The 9 Indispensable Rules》、G. Aaron Wilkin《Debugging From Art to Science》(列出了教学目标,如描述缺陷如何产生、按可复现/确定性对 bug 分类、阅读和理解大型项目、重现/强制失败的过程、用科学方法搜索 bug、高效利用调试工具、用因果规则修复并证明修复、设计技术/模式以简化未来调试; 并让学生做 bug logbook)。
讨论:自己从哪里学会调试; 同学们学会调试的难点。
自己学会调试:分布式/并行系统难以重现、涉随机; 图形学以输出调试为主; 硬件调试主要看波形(进阶做法如与模拟 ISA 对拍); 最小化代码 / minimal working example 复现; 有人当了助教才自学 gdb, 发现 gdb 这么好用。