第六次读书笔记

调试九法》读书笔记

这周我看了《调试九法》这本书。本书提出的九条简单实用的规则,适用于任何软件应用程序和硬件系统,可以帮助软硬件调试工程师检测大多数bug。作者是David J. Agans,资深调试专家,善于解决一些最棘手的调试问题,曾经营计算机系统咨询公司PointSource,任Zydacron公司副总裁,还曾就职于Gould、仙童和DEC等知名企业。

其九大方法如下

1.理解系统

2. 制造失败

3. 不要想,而要看

4. 分而治之

5. 一次只改一个地方

6. 保持审计跟踪

7. 检查插头

8. 获得全新观点

9. 如果你不修复 bug ,它将依然存在

作为一个程序员,我主要关注了其软件程序部分。以下是我的一些体会。

对于“不要想,而要看”,凭空想象,问题可能有几千条原因,而实际的原因只有去看了才能发现。如果观察失败。仅靠猜测某个地方出了问题就修复它,不仅没修复问题还可能把真正问题隐藏起来,还误以为修复了问题。接下来,查看细节,一直观察,直到把问题原因锁定在几种可能之内。把最易解决的问题先查看修复。

特别是在这次个人作业中,很多bug都是想不出来,而是调试出来的,得到很好的应征

对于“分而治之”,其实就是排除法,逐步逼近,这是调试的核心。首先确定问题范围,逐步逼近缩小搜索范围。再从有问题的一边开始搜索。不要把精力花费在没问题的地方。修复探索过程中的已知bug,最后消除干扰因素。

对于“一次只改一个地方”,类似分离变量法,不要乱改,为验证问题,一次只改一个地方, 隔离关键因素,别改出了其它问题。与正常情况进行比较。这样才能发现问题所在。

当然,我看过这本书后,也有些不尽如人意的地方,希望大家阅读时引起注意,一是因为作向软件,不是很有针对性;二是由于作者是个50后,所以有些现实生活中的例子,我们也不是很熟悉,如唱机问题之类的设备。

原文地址:https://www.cnblogs.com/nkzyc/p/8719683.html

时间: 2024-10-11 08:01:12

第六次读书笔记的相关文章

Android深度探索——第六章读书笔记及心得

单词个数统计程序 ——第六章读书笔记及心得 通过本章的学习,学会了使用多种平台测试linux驱动开发.学会了统计单词个数的程序,通过该程序知道了该算法的实现技术为linux驱动,因为该程序的单词是封装在linux驱动中的.在此之前还对linux有了深入的了解.知道了linux驱动程序编写的步骤.了解到了一些重要的函数.学会了注册和注销设备文件.学会了制定回调函数.知道了如何在eclipse中开发和测试linux驱动程序. Linux系统将每一个驱动都映射为一个文件,称为设备文件或驱动文件,都保存

第六周读书笔记《极客与团队》

<极客与团队>读书笔记 做程序员这个职业,就意味着与别人在工作上会有不少沟通与交流,处于一个团队中,如何能更好地编写代码,在团队中如鱼得水,过得更加开心,<极客与团队>这本书就给了我一些启迪. 这本书其实针对的是极客们,希望他们能够认识到团队的重要性.书中提到程序员要建立可以理解的代码,要注意与人的沟通,而不是只顾着自己.这一点我深表赞同.邓老师也在一直强调,写的代码要注意注释,要跟别人进行交流,注意书写格式以使得代码阅读性更强.这是因为个人的工作只是团队工作的一部分,要想整个团队

第六章 读书笔记

编写linux驱动程序的步骤 第一步:建立linux驱动骨架(装载和卸载linux驱动) 第二步:注册和注销设备文件 第三步:指定与驱动相关的信息 第四步:指定回掉函数 第五步:编写业务逻辑 第六步:编写makefile文件 第七步:编写linux驱动程序 第八步:安装和卸载linux驱动 Printf函数运行在用户空间,printk函数运行在内核空间. 测试linux驱动步骤 第一步:导入test_count.c文件 第二步:设置include路径 第三步:建立target 第四步:build

JavaScript高级程序设计(第3版)第六章读书笔记

第六章 面向对象的程序设计 1. 数据属性 [[Configurable]]:表示能否通过delete删除属性从而重新定义属性.默认值为true. [[Enumerable]]:表示能否通过for-in循环返回属性.默认值为true. [[Writable]]:表示能否修改属性的值,默认为true. [[Value]]:包含这个属性的数据值.默认为undefined. 要修改属性默认的特性,必须使用ECMAScript5的Object.defineProperty( )方法.接收三个参数:属性所

第五六周读书笔记

一.几种低压接地系统: 1.TN系统: TN系统即电源中性点直接接地.设备外露可导电部分与电源中性点直接电气连接的系统. TN系统主要是靠单相碰壳故障变成单相短路故障(短路电流是 TT 系统的 5.3 倍),并通过短路保护切断电源来实施电击防护的.从电击防护的角度来说,单相短路电流大或过电流保护器动作电流值小,对电击防护都是有利的. TN 系统节省材料.工时,在我国和其他许多国家广泛得到应用. TN 方式供电系统中,根据其保护零线是否与工作零线分开而划分为TN-S系统.TN-C系统.TN-C-S

存储器层次结构 --《深入理解计算机系统》第六章读书笔记

1.几种存储技术 随机访问存储器RAM,RAM又分为两类:静态的SRAM和动态的DRAM. 静态SRAM特点:容量较小,速度较之动态DRAM要快很多,故而价格也较高.一般用作CPU与内存的缓存. 动态DRAM特点:容量较大,速度比SRAM慢,价格相对较低.一般用作系统内存. 磁盘存储,存盘属于外部I/O设备,其特点是存储容量大,但读取速度更慢,价格也更加便宜.一般而言,从磁盘上读信息的时间为毫秒级,从DRAM读比从磁盘读快10万倍,从SRAM读比从磁盘读快100万倍. 因为磁盘的构造是一个圆盘,

第六章读书笔记

2.1 编写基本的Linux驱动的一般步骤: 1)建立Linux驱动的骨架(装载和卸载Linux驱动): 2)注册和注销设备文件: 3)指定与驱动相关的信息: 4)指定回调函数: 5)编写业务逻辑: 6)编写Makefile文件: 7)编译Linux驱动程序: 8)安装和卸载Linux驱动. 对于一个Linux驱动程序,一开始可以在Ubuntu Linux上做前期开发和测试.对于访问硬件的部分也可以在Ubuntu Linux用软件进行模拟.当基本开发完成后,就需要在开发板或者工程样机上使用真实的

Android深度探索(卷1)HAL与驱动开发第六章读书笔记

编写Linux驱动程序的步骤 第1步:建立Linux驱动骨架(装载和卸载Linux驱动) 第2步:注册和注销设备文件 第3步:指定于驱动相关的信息 第4步:指定回调函数 第5步:编写业务逻辑 第6步:编写Makefile文件 第7步:编译Linux驱动程序 第8步:安装和卸载Linux驱动 安装Linux驱动: # insmod word_count.ko 查看word_count是否成功安装: # lsmod | grep  word_count 卸载L inux驱动: # rmmod wor

《构建之法》第六章读书笔记

一.敏捷的流程简介 敏捷开发的原则是: 1.尽早并持续地交付有价值的软件以满足顾客需求 2.敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势 3.经常发布可用的软件,发布间隔可以从几周到几个月,能短则短 4.业务人员和开发人员在项目开发过程中应该每天共同工作 5.以有进取心的人为项目核心,充分支持信任他们 6.无论团队内外,面对面的交流始终是最有效的沟通方式 7.可用的软件是衡量项目进展的主要指标 8.敏捷流程应能保持可持续的发展.领导.团队和用户应该能按照目前的步调持续合作下去 9.