美国上市公司,专注Java培训21年

程序员老司机带你改bug


程序员老司机带改bug。记得刚毕业入行时,我们老大派给我和另外一个新来同事的第一件事就是修Bug,要不是在学校敲过几年代码,还真不知道如何下手!和我一起进公司的另外一个同事完全就是以“看戏者”的身份,看我搞了3个月,直到我们转正。一个新的程序员如何解决bug?

改bug

实际上,很多时候,让一个新人去调Bug,真的是劳财伤命,浪费时间。尤其是一些大型系统的复杂性Bug,让一个新人去搞定,很多时候,这无异于在开一个大玩笑!这种决定往往取得的结果不是加快了项目的进度,反而会让这些年轻人备受打击,有时甚至会让新人们对人生产生怀疑。

这绝对不是一个老程序解决Bug的套路。有人可能要反驳,我不能让他借助调Bug,了解下系统不行吗?对于有这种想法的,我只能说,你太高估别人了,你让一个有2,3年开发经验的人,去熟悉一个大型系统也不是件轻松的事情。

若非天赋很高,那么很可能导致我们的新人,在进入公司后的实习期,处于缓慢进步甚至进步停滞的状态,天天盯着开发计划表里的Bug,丈二和尚摸不着头脑,不知所措,这种状态不管对公司还是个人发展都不利。鄙人认为合理的方式是,给新人把整个系统的结构粗讲一遍,再给分配一些简单的模块去开发比较好。

程序员在很多人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。

对于新手程序员而言,在复杂代码中找BUG是一个难点。下面我们总结下老从程序员解Bug的通用套路,希望对大家有帮助。

1.IDE调试

根据项目特点和语言特点选择一个最合适的IDE,由于本人是做C++出身,最喜欢用的莫过于Visual Studio了,这款微软开发的IDE,自从研发出来,就被称为宇宙第一编译器,能编译调试C/C++、C#、F#、Python、JavaScript、Qt、iOS等多种语言的开发。目前的VS2017还原生支持远程跨平台的软件开发,这无疑给我们常年奋战在linux/Unix黑匣子开发环境,使用G++调试的C/C++程序猿们带来了福音。

2.重构大法。

如果你发现无论如何也找不到BUG,而且代码只是复杂,本身不是很长,直接重写代码吧!重构大法是解决爆炸性bug的绝招。

3.printf大法

大家都说printf大法(也称cout大法)好,我也这么觉得!把需要验证的参数打印出来,不仅直观,而且方便调试。

4.日志大法

日志大法,法力无边。一个成熟的系统少不了日志模块,懂得和善于使用日志大法调bug的同学,恭喜你,你已经步入中级程序员的行列。

5.小黄鸭调试法

小黄鸭不懂程序,所以我们可以向他解释每一行程序的作用,以此来激发灵感。

6.二分定位法

把程序逻辑一点点注释掉,看看还会不会出问题,类似二分查找的方法,逐步缩小问题范围。

7.模拟现场法

模拟现场,有时候我会问自己,如果我要实现bug描述的现象我要怎么写代码才行?比如:我遇到一个死锁问题,但是检查代码发现所有的锁都是配对的,没有忘记解锁的地方,而且锁很简单就是一个普通的临界段,保护几行赋值语句而已。这样的代码怎么写才能让他死锁呢?我想如果让我故意制造这样一个现象,只有在上锁的时候强制杀掉线程了。既然这样就可以去看看有谁强杀线程了没有。

8.制作调试工具

此方法在很多大厂比较常见,一个是快速迭代的要求,一个是大厂的通用框架比较成熟,当然工具的适用性比较强。

9.优先解决可重现的bug

可重现的bug,优先解决,多调试测试几次,把容易解决的bug先解决掉,亦可以减少bug数量,也可以减少干扰。

10.放大现象。

有些bug不是很明显,那么就想办法增加他的破坏性,把现象放大,这在我们的系统压力测试时会经常遇到一种方法。千万别觉得自己的系统就几千日活,就把压力测试压得很低,结果,实际上线时,系统压力过大宕机的情况不在少数,这种问题很多大厂也出现过,还记得有一年抢红包,抢了点不开的事吗?

程序员老司机带你解决bug看完有何感想?当然处理bug不光是为了自己,很多时候是因为被测试和领导盯着,想想一下你被盯着改bug心里承受的压力吧!


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多

Java开班时间

收起