文档章节

调试九法

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

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

1,阅读手册

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

2,制造失败

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

3,不要想,多看

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

© 著作权归作者所有

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

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

长平狐 ⋅ 2012/06/08 ⋅ 0

实验十 LL(1)分析表的构造

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

tangyuanzong ⋅ 2017/12/13 ⋅ 0

不会调试的人不是程序员------------------>

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

jinx88 ⋅ 2016/07/23 ⋅ 0

克莱姆法则、逆矩阵、体积[MIT线代第二十课]

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

忆臻 ⋅ 2017/12/15 ⋅ 0

中文分词模型之最大熵模型

中文分词模型之最大熵 学习自然语言处理的相关模型,一直觉得云里雾里。看了好久的《统计学习方法》,也依然无所进益。看了很多博客,也没有具体的,正确率较高分词的实现细节。于是,决定从...

sbp810050504 ⋅ 2015/01/19 ⋅ 0

Python3入门机器学习(六)- 梯度下降法

1. 梯度下降法简介 以下是定义了一个损失函数以后,参数theta对应的损失函数J的值对应的示例图,我们需要找到使得损失函数值J取得最小值对应的theta(这里是二维平面,也就是我们的参数只有一...

Meet相识_bfa5 ⋅ 04/22 ⋅ 0

程序员小测试:保守派 vs 自由派

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

阮一峰 ⋅ 2016/09/08 ⋅ 0

一个简单的C语言编写的五子棋程序 请各位指点一下 算法

我们是一个课程设计,让设计一个五子棋的游戏,让我们写实训报告,源代码调试出来了,可是实训报告不知道怎么写,求大神们指点。 一、需求分析 建立一个简单的五子棋游戏,能够实现人机对战。...

格子_ ⋅ 2013/07/02 ⋅ 2

学习ximo脱壳视频:2、手脱ASPACK壳

所用工具:Ollydbg(吾爱版) PEID v0.95 运行环境:windows xp 使用PEID v0.95进行查壳 此程序的壳为ASPack 使用OD载入程序,ASPack壳查询OEP有6种方法,1.单步跟踪,2.ESP定律, 3.一步直达...

qq_34449006 ⋅ 04/22 ⋅ 0

“我爱智能”原创性博客索引

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

on2way ⋅ 2015/08/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

RabbitMQ学习以及与Spring的集成(三)

本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收。 在RabbitMQ的Spring配置文件中,首先需要增加命名空间。 xmlns:rabbit="http://www.springframework.org/schema/rabbit" 其次是模...

onedotdot ⋅ 26分钟前 ⋅ 0

JAVA实现仿微信红包分配规则

最近过年发红包拜年成为一种新的潮流,作为程序猿对算法的好奇远远要大于对红包的好奇,这里介绍一种自己想到的一种随机红包分配策略,还请大家多多指教。 算法介绍 一、红包金额限制 对于微...

小致dad ⋅ 38分钟前 ⋅ 0

Python 数电表格格式化 xlutils xlwt xlrd的使用

需要安装 xlutils xlwt xlrd 格式化前 格式化后 代码 先copy读取的表格,然后按照一定的规则修改,将昵称中的学号提取出来替换昵称即可 from xlrd import open_workbookfrom xlutils.copy ...

阿豪boy ⋅ 今天 ⋅ 0

面试题:使用rand5()生成rand7()

前言 读研究生这3 年,思维与本科相比变化挺大的,这几年除了看论文、设计方案,更重要的是学会注重先思考、再实现,感觉更加成熟吧,不再像个小P孩,人年轻时总会心高气傲。有1 道面试题:给...

初雪之音 ⋅ 今天 ⋅ 0

Docker Toolbox Looks like something went wrong

Docker Toolbox 重新安装后提示错误:Looks like something went wrong in step ´Checking if machine default exists´ 控制面板-->程序与应用-->启用或关闭windows功能:找到Hyper-V,如果处......

随你疯 ⋅ 今天 ⋅ 0

Guacamole 远程桌面

本文将Apache的guacamole服务的部署和应用,http://guacamole.apache.org/doc/gug/ 该链接下有全部相关知识的英文文档,如果水平ok,可以去这里仔细查看。 一、简介 Apache Guacamole 是无客...

千里明月 ⋅ 今天 ⋅ 0

nagios 安装

Nagios简介:监控网络并排除网络故障的工具:nagios,Ntop,OpenVAS,OCS,OSSIM等开源监控工具。 可以实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和h...

寰宇01 ⋅ 今天 ⋅ 0

AngularDart注意事项

默认情况下创建Dart项目应出现以下列表: 有时会因为不知明的原因导致列表项缺失: 此时可以通过以下步骤解决: 1.创建项目涉及到的包:stagehand 2.执行pub global activate stagehand或pub...

scooplol ⋅ 今天 ⋅ 0

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部