文档章节

调试九法

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

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

1,阅读手册

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

2,制造失败

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

3,不要想,多看

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

© 著作权归作者所有

共有 人打赏支持
xiaocui911
粉丝 6
博文 69
码字总数 14765
作品 0
深圳
程序员
调试九法:软硬件错误的排查之道<书评>

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

长平狐
2012/06/08
53
0
实验十 LL(1)分析表的构造

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

tangyuanzong
2017/12/13
0
0
不会调试的人不是程序员------------------>

通过调试,程序员可以学会如何运用断点,如何最快的找到可疑语句,如何迅速找到问题,从而改进程序. 调试初级: 1.运行程序 2.设置断点 ,取消断点 3.运行到断点 4.单步追踪 step into 5.单步执行s...

jinx88
2016/07/23
13
0
克莱姆法则、逆矩阵、体积[MIT线代第二十课]

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

忆臻
2017/12/15
0
0
程序员小测试:保守派 vs 自由派

最近,我在阅读 Steve Yegg 的文集《程序员的呐喊》。 这是一本非常有趣的书,里面甚至包含了一个小测试(原文),区分一个程序员到底是保守派还是自由派。 下面一共有十个问题,每个问题都有...

阮一峰
2016/09/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

InvalidKeyException: Illegal key size

Caused by: java.lang.RuntimeException: java.security.InvalidKeyException: Illegal key size 解决方案:去官方下载JCE无限制权限策略文件。 jdk 5: http://www.oracle.com/technetwork/j......

自由的开源
8分钟前
0
0
JAVA秒杀实现以及优化原理

秒杀与其他业务最大的区别在于:秒杀的瞬间, (1)系统的并发量会非常的大 (2)并发量大的同时,网络的流量也会瞬间变大。 关于(2),最常用的办法就是做页面静态化,也就是常说的前后端分...

小贱是个程序员
12分钟前
1
0
Spring Aop之Advisor解析

在上文Spring Aop之Target Source详解中,我们讲解了Spring是如何通过封装Target Source来达到对最终获取的目标bean进行封装的目的。其中我们讲解到,Spring Aop对目标bean进行代理是通过Ann...

爱宝贝丶
14分钟前
0
0
Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点

前言: 分享 Java高级工程师面试阿里,阿里云,天猫,菜鸟,涉及到的知识点,文章有点长,但比较全面,阅读时间15分钟左右,干货满满。 一、HashMap的那些事 1.1、HashMap的实现原理 1.1.1、...

Java大蜗牛
39分钟前
2
0
nginx模块学习五 expires 浏览器缓存

缓存原理 语法 Syntax: expires [modified] time;expires epoch | max | off;Default: expires off;Context: http,server,location,if in location 例/etc/nginx/conf.d/default.con......

Romanceling
50分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部