文档章节

调试九法

xiaocui911
 xiaocui911
发布于 2017/04/29 17:58
字数 720
阅读 11
收藏 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
53
0
“我爱智能”原创性博客索引

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

on2way
2015/08/29
0
0
Bryce1010 Acm模板

目录 STL标准模板库 STL简介 STL pair STL set STL vector STL string STL stack STL queue STL map upperbound和lowerbound STL bitset STL iterator简介 STL algorithm greater< int>()和l......

Fire_to_cheat_
2017/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《Netkiller Java 手札》· 二进制文件操作大全

本文节选自《Netkiller Java 手札》 Netkiller Java 手札 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市望海路半岛城邦三期 518067 +86 13113668890 <netkiller@msn.com> $Id: book.xml 6......

netkiller-
12分钟前
0
0
Fiddler Debugger post请求

常用的两种: 第一种默认的 对应URL为www 的要用请求头为:Content-Type: application/x-www-form-urlencoded 请求参数为 :param1=1234¶m2=12345 注:有些接口是指定用这种的第二方式并不...

轻量级赤影
19分钟前
1
0
如何搭建母婴亲子类知识社区

近期社交领域融资动作频繁,海尔高管、海尔医疗有限公司总裁管礼庆创办的母婴知识分享社区平台Alwayslove于上月获得700万天使轮融资。 Alwayslove是一个母婴知识分享社区平台,采用UGC模式,...

ThinkSNS账号
21分钟前
0
0
Android 自定义构建类型 BuildType

最近接触到自定义构建类型 BuildType,发现这一块有些地方稍不注意的话会被绕进去浪费点时间,既然我这边已经花费时间了,如果正好你也需要接触到 BuildType,也许接下来分享的 tips 可能会帮...

猴亮屏
23分钟前
1
0
美团点评基于 Flink 的实时数仓建设实践

引言 近些年,企业对数据服务实时化服务的需求日益增多。本文整理了常见实时数据组件的性能特点和适用场景,介绍了美团如何通过 Flink 引擎构建实时数据仓库,从而提供高效、稳健的实时数据服...

美团技术团队
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部