文档章节

调试九法

xiaocui911
 xiaocui911
发布于 2017/04/29 17:58
字数 720
阅读 12
收藏 0

对于调试这一块,我以为是凭借经验的积累而不断改善的,所以对于调试的书籍从来没有关注过,今天休息时间翻开了《调试九法》这本书随便看看了,突然觉得自己以前调试确实犯了好多错误,这里算是给自己一个纠正的开始,习惯是要改变,但不能少了耐心。

1,阅读手册

我做开发之前肯定也是需要阅读手册的,但通常只是找自己关心的地方。然后等到出错了,回过头来再看手册,但是第一印象对我很重要,所以第二次看手册会不觉地去着重看以前有印象的部分,而忽略了其他细节部分,这是很要命的。看手册一定要有耐心,一句一句的进行。因为细节就是解决问题的关键。不要以为其他部分没用,因为整个流程的细节你还不懂。

2,制造失败

当运行代码时会发生间歇性的bug,这是就需要多次制造失败来观察他,这里可不是模拟失败,有时我会猜测失败引发的原因,然后重构代码来模拟bug,虽然有时会成功解决问题,但是这绝不是最合适的方式。仔细思考背后的原理,然后从头开始一点一点进行来引发失败。要认识到“那”是有可能发生的,不要说的那么绝对。因为整个的真正原理你还不懂。通常在调试中,我会把调试正确的代码中的调试语句全部删掉来显的代码的“干净”,这绝不是一个好方法。经过调试正确的代码要做好备份,然后再正式代码中注释掉或者“#ifndef”来屏蔽调试的部分,因为你肯定不知道以后还会不会再次调试。

3,不要想,多看

我喜欢想这个bug出现的原因,我想不少数工程师有这个习惯吧。但是我认为这是最不好的一个了,想永远没有观察来的有效,虽然这可能花的时间会比想时间长很多。如果想找到故障所在,必须要找到足够多的细节然后再判断。找到问题后多实验几次不同的状况,然后才能真正实现稳定性。不要害怕深入研究,因为这才真正解决这一类问题的关键。还有就是不要忽略了外部调试工具的影响,示波器的探针会增加电容,打印语句会影响时间和代码规模。猜测只是为了确定搜索重点目标。然后进行观察。

© 著作权归作者所有

共有 人打赏支持
上一篇: 多线程爬虫
下一篇: 捕获调试
xiaocui911
粉丝 6
博文 69
码字总数 14765
作品 0
深圳
程序员
私信 提问
实验十 LL(1)分析表的构造

一、实验目的 学习和掌握FIRST集合、FOLLOW集合的计算,LL(1)分析表的构造方法。 二、实验任务 (1)存储文法; (2)计算给定文法所有非终结符的FIRST集合; (3)计算给定文法所有非终结...

tangyuanzong
2017/12/13
0
0
克莱姆法则、逆矩阵、体积[MIT线代第二十课]

0、前言 MIT线性代数课程精细笔记[第十八九课]笔记见行列式介绍[MIT线代第十八九课],该笔记是连载笔记,本文由坤博所写,希望对大家有帮助。 一、知识概要 上一节中我们介绍了行列式的求法,...

忆臻
2017/12/15
0
0
调试九法:软硬件错误的排查之道<书评>

调试九法:软硬件错误的排查之道 前几天从Top 100 Best Software Engineering Books, Ever听说这本书,唯一一本关于调试的,想必上榜只有它的道理,于是在卓越订了一本,昨天拿到的书,书很薄...

长平狐
2012/06/08
56
0
“我爱智能”原创性博客索引

不知不觉,博客也写出了一点小体系,新的阶段已经开始,未来希望再接再厉继续补充这一体系,在成长中写博客,在博客中成长,在此先做一个小的梳理,谢谢大家的支持。 一)关于深度学习系列 ...

on2way
2015/08/29
0
0
MIT Introduction to Algorithms 学习笔记(九)

Lecture8: Hashing I 字典 一种抽象数据类型(Abstract Data Type ,ADT),维护一组元素,每个元素都与一个关键字(KEY)相关,并有以下操作: 实现 直接寻址表(Direct Access Table):用KEY...

hyaicc
2016/01/12
39
0

没有更多内容

加载失败,请刷新页面

加载更多

day178-2018-12-15-英语流利阅读-待学习

“真蛛奶茶”了解一下?蜘蛛也会产奶了 Lala 2018-12-15 1.今日导读 “蛋白质含量是牛奶的 4 倍,并有着更低的脂肪和含糖量”,听起来诱人又美味的并不是羊奶或豆奶,而是你可能打死都想不到...

飞鱼说编程
15分钟前
3
0
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents

场景重现 npm install --verbose 安装依赖的时,出现如下警告 强迫症患者表示不能接受 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):npm WARN......

taadis
19分钟前
1
0
MySQL自增id超大问题查询

引言 小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入...

dragon_tech
32分钟前
3
0
OSChina 周六乱弹 —— 你一口我一口多咬一口是小狗

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文 :分享Roy Orbison的单曲《She's a Mystery to Me》 《She's a Mystery to Me》- Roy Orbison 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
279
6
Spring源码学习笔记-1-Resource

打算补下基础,学习下Spring源码,参考书籍是《Spring源码深度解析》,使用版本是Spring 3.2.x,本来想试图用脑图记录的,发现代码部分不好贴,还是作罢,这里只大略记录下想法,不写太细了 ...

zypy333
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部