第一部分,归纳、推演的艺术
纯闲聊性质。
第二部分,依赖关系
从类型上分为
- 控制流依赖关系, 即控制变量值变化的if,while等控制语句
- 数据流依赖关系, 即变量值的变化
从方向上看,则分为
- 反向依赖。哪些语句会影响这一句的执行。比如,if里的语句就必须先满足if的条件,这是逆向依赖性。
- 正向依赖。这一句会影响到后面哪些语句的执行。
从状态就分为
- 静态,静态代码分析的结果
- 动态,动态日志加原静态依赖关系
不得不说依赖关系这部分确实没什么可说的
第三部分 逆向推导理论
嗯,真的只是理论
镇宅法宝就是 delta调试法–虽然从练习上来说,练习中delta调试法的使用和我想的一点都不一样,感觉和视频里讲的也不一样。
基本思想
- 在规定时间,规定地点交待事情,不对,是修改变量的值,修改后,程序继续运行却不会出错,这样我们就找到了一个失败的起因。
- 某个执行失败的变量,将值改成执行成功时的值,则这个变量就是失败的起因了。
好吧,第2条是对第1条的补充,不该算作两条。
自动化的基本思想
- 在规定地点(指定的代码行上),获取成功、失败的两次执行的状态
- 比较两次执行状态,得到差别的集合,即值不同的变量
- 使用delta调试法,从这个集合中找出影响测试的最小子集(这里老师又改成使成功的变失败了,能理解,但之前没注意到这里。)
本单元的练习只是求某个或某几个手工指定的时间、地点的最小子集,还没有要求去求出完整的因果链。
不过,可惜的是后面他就没再讲怎么求完整因果链了,本单元2/3课时介绍的内容等于一点都没用上。
原本是用markdown 写笔记的,看来想转到csdn上还是不方便——放github上,估计没什么访问,死要面子活受罪说的就是我了。
Udacity调试课笔记之第四单元追根溯源
时间: 2024-11-07 00:38:26