什么是调试?调试的目标是什么?调试就是查明问题的根本原因,这是一切事情的基础!

看到过很多文章,设计,代码,需求,方法……可是很少看到有人写调试,是因为它太容易,所以不屑一提,还是因为它太细节,不易描述?对于高手来说,调试也许轻而易举,哪怕不知道如何描述调试,至少知道如何调试,可是,很多初学者并没有调试的概念,也不知道如何调试。问自己这么一个问题:当程序遇到问题的时候,你是用心的在分析原因,还是仅仅凭着直觉进行修改?

调试,其实不容易,它比其他任何过程都需要动脑,它不发生在调试器或者代码中,而是形成于大脑中,找到并理解问题的根源,才能进行其他的工作。

最近看到这本Paul Butcher的《软件调试修炼之道》,如获至宝,对于调试,其实作为程序员,我们对这个词并不陌生,但是为何有些人能快速准确无误找出原因而有人却丈二和尚摸不着头脑?跟着这本书,让我们一起走进调试的世界吧~

Debugging is an iterative process.——调试是一个反复的过程

有效的调试如何执行?

1.弄清楚软件为什么会运行失常
2.修复这一问题
3.避免破坏其他部分
4.保持或者提高代码的总体质量(可读性、架构、测试覆盖率、性能等)
5.确保同样的问题不会再其他地方发生,也不会再次发生

通过仔细地构建实验环境并观察软件的运行情况,可以更有效地找到问题,这样做不仅更为快捷,而且通过观察可以使你重新审视自己关于软件运行还有哪些错误的假设。记住:软件本身就是你的工具箱中最强有力的工具~

调试过程的核心包括:

1. 问题重现  找一个可靠并简洁的方式来按需求重现问题
2. 问题诊断  提出假设,并通过实验来测试它们,直到找出引起缺陷的潜在原因
3. 缺陷修复  设计和进行一些修改来修复问题,不要引入回归问题,保持和提高软件的整体质量
4. 反思      吸取教训

一般来说,这些步骤是按顺序执行的,这算是一个迭代过程,在问题诊断中学到的知识可能会高速你如何提高重现问题的水平,或者在软件修复中学到的知识可能会使你重新考虑你的诊断结果。

基本原则:

1. 一次只解决一个问题
2. 确保你知道自己要找的是什么:正在发生什么?应该发生什么?
3. 先检查简单的事情

本章至此告一段落,下一章将详细讲解调试过程的核心之重现问题~

转载于:https://www.cnblogs.com/Ribbon/archive/2013/02/20/2917887.html

软件调试修炼之道之——山重水复疑无路相关推荐

  1. 图灵2011年6月书讯【误区】【软件调试修炼之道】即将上市

    - 误区:思维中常犯的6个基本错误 --本书通过许多生动玄妙的生活小事,深刻而犀利地揭示了6种思维陷阱,介绍了形成正确信念和作出科学决策应遵循的方法.通过作者引人入胜的叙事方式,层层深入的分析讲解,你 ...

  2. 软件调试修炼之道之——反思

    缺陷修复的目标极其明确,但有时候修复的过程涉及的只是一个孤立的代码区,因此,修复完缺陷后有必要花时间反思以下几个问题. 这到底是怎么搞的?当你对缺陷怀抱这样的疑问时,尤其在修复完后依然怀抱这样的疑问时 ...

  3. 山重水复疑无路,柳暗花明又一村

    本来找不到钥匙 怎么找也找不到 最后发现在羽绒服的口袋里面 我觉得 重点是我们如何按照"道"来做这个事情 不要太在乎这个眼前的得失 这个很难平衡好 但是我们可以做到

  4. 山重水复疑无路,柳暗花明又一村——记一次在win7下安装MATLAB的经历

    某人现在搞课程设计,要用到MATLAB,请求我帮忙装一下.其电脑是惠普的本本,系统是win7. 拿到本本后,我的第一个想法就是,把我机子上安装的MATLAB6.5的安装程序考过去,直接安装.顺利的话, ...

  5. 山重水复疑无路,柳暗花明又一村(12.15一周总结)

    一周总结 最美的不是下雨天 是曾与你躲过雨的屋檐 这一周天气变化的非常频繁,忽冷忽热.今天还下了点小雨,一直都很喜欢下雨天,尤其是小雨,淋着雨走在路上的感觉非常的美妙,美中不足的是--心疼自己的耳机, ...

  6. 山重水复疑无路,最快下降问梯度

    <~生~信~交~流~与~合~作~请~关~注~公~众~号@生信探索> 标题来自张玉宏老师书的目录<深度学习之美> 之前的推文中使用最小二乘法求损失函数的最小值,但是在机器学习和深 ...

  7. 山穷水尽疑无路,柳岸花明又一村

    有很多时候会发生很多,很巧合,但是不可思议的事情.而今天就发生了一件在我的身上. 早上起来,洗漱完了,准备去上班.开门的时候突然发现门打不开,这是为什么?以为是没有开过这样的门,尝试了各种方式才发先, ...

  8. “山空水尽疑无路,柳暗花明又一村?”

    "山空水尽疑无路,柳暗花明又一村"? 在这句话的后面加个问号,最能表达我的心情,昨天很苦恼的事情,今天在很多热心人的帮助下有了转机,刚好今天考试组织方来了人(性格很好,人也很漂亮) ...

  9. 山穷水尽疑无路,柳暗花明又一村

    1.在现在的屋子里做需要窗帘(不想去弄了,因为我在一个基本全空的屋子里做,就住剩下十几天(谈不上住,只是上午下午在这而已),就没人住这里了), 在里屋做,需要再来个插座,这倒是没问题,回家再拿个,但是 ...

  10. 山穷水复疑无路?柳暗花明又一村|转行软件测试月薪12K

    他从基层业务做到业务总监,再到团队解散,开启3次创业之路,经历了3年的"试错期",最终选择了转行做软件测试.希望张同学的分享能对一直处于迷茫的小伙伴一些帮助. 初入职场,风生水起 ...

最新文章

  1. Python每日一练0018
  2. 电路原理邱关源_看高手是如何学习电路原理的,有哪些捷径?
  3. 一位从业20年的程序员分享积累的20条编程经验
  4. Qt QGraphics体系及刷新机制介绍
  5. CString .Format
  6. ASP.NET 2.0+Atlas编写鼠标拖放程序
  7. javascript递归函数问题
  8. OLED电视出现烧屏问题 LG电子被判赔偿消费者16万澳元
  9. 通过json动态创建控制器
  10. Mike Novogratz:比特币在未来几年内将继续大幅上涨
  11. HttpClient_002_中文乱码、HttpClient中文乱码透析、总结
  12. Java 基本数据类型(四类八种)
  13. W10笔记本电脑弄成WIFI
  14. 入职半年后,我升到了管理岗
  15. 新浪-InSAR博客网址Blog of Jerome Cheung
  16. 学Java到底要不要上培训班?
  17. 原子操作、锁、同步实现原理
  18. 苹果cms怎么采集别人网站的视频
  19. LeetCode 981. 基于时间的键值存储 / 274. H 指数 / 275. H 指数 II
  20. uclinux开发概述

热门文章

  1. uni-app 二维码生成器分享
  2. gcc编译优化-O0 -O1 -O2 -O3 -OS解析
  3. 六度人脉,每一个擦肩而过都有可能和你有关系
  4. aspcms基本的安全策略
  5. python自动生成加减法算术题
  6. 深入table之collapse
  7. P1156 垃圾陷阱(背包dp)
  8. Unity 2D游戏制作流程用到的技巧
  9. 2021SC@SDUSC山东大学软件学院软件工程应用与实践--YOLOV5代码分析(十)plots.py-2
  10. 泰坦尼克号生还者预测