我对调试程序的一个理解

- 日理万妓 2022-05-30 07:29 224阅读 0赞

1,什么东西都有一个过程的。只是我们站在这个过程中的不同阶段说出自己对调试程序的一个理解。

而这个我们也是有关联的。

因为有些人非常熟悉日志打印错误。

有些人非常熟悉println()和alert()。

有的人喜欢单步debug方式(慢,不到万不得已是不这样做的)。将代码逐渐减少的排错方式(慢,不到万不得已是不这样做的)。

有的喜欢采用橡皮鸭调试方法。

有的当程序出现问题的时候他什么都不做就只是在思考,在脑子里不停分析这个功能点或者代码片段的执行逻辑过程,对,就是用脑子模拟机器的执行过程。

而且我们思考问题也是跟时间空间情绪相关联的。

2,都是一个熟悉过程。没有任何一个方法,放之四海而皆准。当我们没有方法的时候,就可以好好思考上面的策略了。然后自己一点一点地熟悉。最后拥有了属于自己的一个理解过程。拥有了属于自己的心得体会和调试程序手段。这些调试方法都非常的好,我们需要灵活搭配使用。

3,橡皮鸭式调试程序思想。是从一个大牛的博客上读到的。然后理解了他的概念。就是说,当我们程序出错了或者当我完成一个功能了,我们应该对着一个橡皮鸭子说出,我们这个功能逻辑的整个逻辑过程。他特别强调了是说出整个逻辑过程越详细越好,绝不是那种,这里就是调一个方法,那里就是定义一个局部变量方式,而是具体到每一个细节,如果能够准确而详细地说出来那就是OK的。如果在说的过程中,出现了卡顿或者自己都描述不清楚自己的程序做了什么。那么恭喜你,橡皮鸭式调试方式已经显示出它的作用了,帮你找到了程序的Bug。为什么是橡皮鸭?因为他不说话,他听你说。

4,之前读关于Linux系统的一篇文章。那篇文章中提到对调试程序的一个看法。他说有些人就是厉害,当程序出现错误时候,根本不做任何处理,只是动脑子想整个逻辑实现过程,力求程序在脑子中实现执行过程。这是很厉害的。

5,我们都知道读书的时候,想要考高分。至少我们对知识是特别熟悉的,而且有一定的理解深度。并且我们能够以一个知识点串联起整个生态系统的知识。剖开高智商的人来说,我们都需要熟悉这些基本知识并且有一定深度的理解然后把这些知识系统化。编程高手都是一点一点训练出来的。你想下你愿意为编出优美的程序而读书吗?比如只是针对程序来说。提高程序设计:《Head First 设计模式》《Design Pattern》;提高程序结构:《重构 改善既有代码设计》《代码整洁之道》;提高代码内容:《修改Java程序的151个建议》《Effictive Java》。整体提升:《代码大全》。同理,为了超强的调试程序能力,都需要知道上面的调试手段,理解这些手段,熟悉这些手段。然后练习。练习多了,思考多了,对比着思考多了,自然就厉害了。

发表评论

表情:
评论列表 (有 0 条评论,224人围观)

还没有评论,来说两句吧...

相关阅读

    相关 软件工程理解

    最近在重学软件工程相关的知识,一方面是对自己过往工作经历的一个梳理总结;另一方面,是在和同行交流过程中,发现自己对于一些知识的理解还存在不足。后续一段时间的文章内容,会以软件工

    相关 谈谈协程理解

    协程相关视频解析: [linux系统下协程的实现与原理剖析训练营(上)][linux] [linux系统下协程的实现与原理剖析训练营(下)][linux 1] 什

    相关 BFC理解

      最初这篇文章打算回答寒冬大神的[第一问][Link 1],谈谈CSS布局。本来呢我以为布局主要涉及float跟display相关属性,以及他们的包含框、静态位置等等。后来看

    相关 模块化理解

    模块化是一个"发现" 模块化(Modularity)这个概念与其说是一种创新,不如说是一个"发现"。这正是人们在解决问题时常用的行为方式和思维过程。它不是单纯的技术问题,

    相关 Java语言理解

            去年七月初通过校招进入了现在的公司,转眼已经过去一年多了,经过一年多的实战开发,重新整理一下自己对java的理解,希望能对正在面试以及即将入职工作的blogge

    相关 虚函数理解

           虚函数是具备这样一种能力的函数:能够在知道少量信息的情况下判断出自己的所属者,进而调用所属者里对应的函数。以虚析构函数为例解释下,当我们释放一个用基类的指针指向派