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

记得刚毕业入行时,我们老大派给我和另外一个新来同事的第一件事就是修Bug,要不是在学校敲过几年代码,还真不知道如何下手!和我一起进公司的另外一个同事完全就是以“看戏者”的身份,看我搞了3个月,直到我们转正。实际上,很多时候,让一个新人去调Bug,真的是劳财伤命,浪费时间。尤其是一些大型系统的复杂性Bug,让一个新人去搞定,很多时候,这无异于在开一个大玩笑!这种决定往往取得的结果不是加快了项目的进度,反而会让这些年轻人备受打击,有时甚至会让新人们对人生产生怀疑。这绝对不是一个老程序解决Bug的套路。有人可能要反驳,我不能让他借助调Bug,了解下系统不行吗?对于有这种想法的,我只能说,你太高估别人了,你让一个有2,3年开发经验的人,去熟悉一个大型系统也不是件轻松的事情。若非天赋很高,那么很可能导致我们的新人,在进入公司后的实习期,处于缓慢进步甚至进步停滞的状态,天天盯着开发计划表里的Bug,丈二和尚摸不着头脑,不知所措,这种状态不管对公司还是个人发展都不利。鄙人认为合理的方式是,给新人把整个系统的结构粗讲一遍,再给分配一些简单的模块去开发比较好。

当然我们处理bug不光是为了自己,很多时候是因为被测试和领导盯着:

不同人对bug的反映

当程序员找 Bug 的时候

程序员调 Bug 的感觉,就是这样的一波未平,一波又起

叫新手程序员帮忙改 Bug

牛 X 程序员和 Bug 之间的 PK

开发人员在演示中如何隐藏 Bug

千万不要当程序员面说有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的通用办法相关推荐

  1. 为什么老程序员的效率如此高?编程速度快,Bug数量又少

    大神程序员出发之后径直穿过了田地,十分果断.他只用了十分钟就到了另一边. "你是怎么做到的?"另外两个人问道,"那些地雷怎么没有伤到你?" "很简单, ...

  2. 为什么老程序员的效率如此高?编程速度快,Bug数量又少?

    为什么老程序员编程速度快,Bug数量少? 之前看到一位程序员讲到:2个月前公司有一个35+的老程序员入职,和项目主管一个年纪,但是还是干技术,基本没话,就是干自己的.公司暂时还没有让他挑大梁,观察了他 ...

  3. 实习生两分钟解决程序bug,老程序员笑笑不说话,还是太年轻?

    又到一年高校毕业季,为了能实现更好就业,大学生们也是使尽了浑身解数. 从某种程度上来说,985.211高校毕业的大学生找工作要比普本院校毕业的学生要容易很多,现在也有不少985高校的毕业生已经进入了实 ...

  4. 一个十几年程序员给所有新老程序员的忠告

    吉日噶拉(在外企.上市公司工作过,自己也创业失败过,遇到过很多失败挫折,甚至露宿街头,但是最后还是挺过来了),是一个十几年的程序员了,里面介绍了他的相关经历,以及他的一下经验,无论是对刚入门的程序员, ...

  5. [转]一个十几年程序员给所有新老程序员的忠告

    吉日噶拉(在外企.上市公司工作过,自己也创业失败过,遇到过很多失败挫折,甚至露宿街头,但是最后还是挺过来了),是一个十几年的程序员了,里面介绍了他的相关经历,以及他的一下经验,无论是对刚入门的程序员, ...

  6. IT人永远不老,老程序员价值何在?

    作者:acejoy 来自:acejoy.com/2017/12/20/362/ IT人永远不老?做梦,怎么可能.无论你现在是多么风华正茂,青春洋溢,终有成熟.老去的那天. 但是,人的身体可以变老,人的 ...

  7. 怎么查电脑系统版本_程序员的bug解决不了怎么办?

    一开始公司新来的新手程序员,最近已经开始了他们的工作,部门的项目经理,为了让他们快速上手,让他们对之前的系统进行BUG修复工作,我认为,这种思路对新手程序员来说,是很有益的,通过查找解决BUG,来熟悉 ...

  8. IT 人永远不老,老程序员价值何在?

    IT人永远不老?做梦,怎么可能.无论你现在是多么风华正茂,青春洋溢,终有成熟.老去的那天. 但是,人的身体可以变老,人的精神面貌.心态却真的可以"归来仍是少年",只要你心不老,保持 ...

  9. 一名老程序员的一点感悟给未来的程序员

    作 为一个技术不是大牛事业也不是很成功的老程序员,我觉着还是要写一些什么,来给未来的程序员们讲述一个过来人的感悟吧. 最近开始整理python的资料,博主建立了一个qq群,希望给大家提供一个交流的同平 ...

最新文章

  1. HarmonyOS UI开发 match_parent与match_content
  2. typeScript面试必备之-通识七:typeScript中的可索引接口(数组,对象)+类类型接口...
  3. (转)CSS样式表继承详解
  4. eclipse插件 - lombok的安装
  5. linux图形界面setup,linux setup命令参数及用法详解--linux图形界面设置命令
  6. v-for列表渲染之数组变动检测
  7. Vmware 15 安装 win7 虚拟机 (初学者操作与详解教程)
  8. OSPF路由控制原理与实验
  9. opecv-putText
  10. 10条实用简洁的python代码,拿走即用(内附资料)
  11. Redis入门小案例
  12. java读取文件的方法是_java读取文件的方法有几种
  13. 从月薪3000到月薪过万:做什么工作才能过上想要的生活
  14. 支持ldap的邮箱服务器,U-Mail邮件系统LDAP同步邮箱地址簿教程
  15. xp计算机启动检测硬盘,取消WinXP开机自检技巧五则
  16. java 三阶幻方编程_巧解三阶幻方
  17. ​AAAI 2023 | 基于历史对比学习的时序知识图谱推理
  18. breezy,dapper,edgy,feisty的含义
  19. vue滚动屏幕使其菜单栏隐藏和显示
  20. 让网站加载速度更快的10种方法

热门文章

  1. 作品展之---积分平台运营管理系统
  2. 跨境电商独立站App
  3. 自从拥有数位板,妈妈再也不用担心我学不好ZBrush了,ZBrush零基础新手必看菜单入门讲解
  4. 计算机网络——会话层、表示层、应用层
  5. 金蝶云·星空——暂估应收冲回模式下存货对账
  6. isar舰船 matlab,舰船目标你合成孔径雷达成像分析
  7. cocos creator 微信小游戏 子域分辨率、错位等问题
  8. 漫画:博弈论系列 之 辛普森悖论
  9. php curl重定向,PHP:cURL并跟踪所有重定向
  10. 数据科学系列读书笔记