【专业技术】编程老手如何化解棘手难题

依然记得上一节编程课的时候,老师说过一句让我一直到现在都还记得的话“只要是软件,就一定有bug;只要是软件,他的功能就是有限的;功能越强大的软件,他的问题就越多,你所不知道问题与隐患就越多”;

当我真正开始写第一条程序,写第一个项目,伴随我的就像老师跟我说过的话的那样,有着各种各样的问题;想必所有做程序员的各位朋友们,也有这样的感觉,只要涉及到编程那么伴随着他的就是各种想不到的bug,不管是大的,小的,有头绪的,没有头绪的不管什么问题吧,只要是问题我们都是要去解决!

那么问题来了,碰到了我们会解决的有头绪的bug我们就感觉很轻松没有压力,但是碰到我们没有头绪的bug怎么去解决呢?不知道朋友们是不是都尝试过被不知道怎么解决的bug弄到头大,弄到感觉世界没有明天了,弄到忘记了自己的吃饭的时间,下班的时间,甚至是睡觉的时间,但是就是解决不了 一天 两天 三天,甚至一个星期都过去了,问题还是一点进展都没有;这其中的滋味相信是程序员的多少都经历过,只不过有一部分程序员经常有,但有的程序员可能就比较少,这个跟各自的岗位有关;

废话不多说下面就跟各位朋友分享一下小编碰到这种bug是怎么一步一步的解决的;

第一步:bug复现

通常来说测试人员测试出一个bug,报给你解决的时候,你一看bug的描述,如果说你在脑袋里知道是怎么回事了,那么就不能算是没有头绪。怎么算是没有头绪,就是完全不知道为什么会出现这样的问题;那么第一步就是在自己的电脑复现出已经出现的bug,如果自己用测试人员的方法,可以在自己的电脑上复现出bug的现象,那么就可以很直观的看到什么样的操作会走什么样的代码,什么样的交互会走什么样的代码逻辑,这样第一个解决问题的小小的头绪就很快就出现了;

第二步:广撒网,多测试

在第一步的时候我们已经在本地复现出bug的现象了,也简单的了解了一下,出现的bug可能涉及到的代码逻辑;那么下一步就是在自己的写的程序或是别人写的程序中定位bug的地点,具体的要怎么去定位呢?

小编的方法通常就是两种办法不过屡试不爽,我想大多数人也是这样,第一个方法就是打断点看堆栈,另一个方法就是打印log(这些方法可以让你更好的确定问题出现的位置,已经更好熟悉代码逻辑)做好了这些之后,就是一系列的定位过程,这个过程就是看一个程序员的能力,经验,等等多方面的综合表现吧,能力越强的可能速度越短;做过这步之后,顺利的话就可以知道出现问题的具体位置了;好的话可能已经知道怎么解决了,但是不好的时候也有,发现出现问题的源码自己看不懂,运用的知识也不是自己的能力范围之内那么怎么办?

第三步:知识定位,择优选择

知道代码出问题的位置后,如果知道怎么修改来解决这个问题,那么就要想想要怎么很好的修改这个代码可以让自己的程序更加的健全,也要想想修改这个代码后会不会影响其他已经正常运行的代码;那么问题就可以圆满的交公关闭bug了;如果不知道怎么来修改这个代码,那么情况可能更复杂一点了,首先看看能不能知道这个代码用的是什么知识点,如果知道就要好好分析代码的上下文,如果不知道知识点那么就要先弄懂是什么知识点了,可以自己弄懂最好如果自己弄不懂就要问了;这个过程可能还是有点煎熬但是经过这一次之后,以后再碰到这个知识点你就不会再这样了,这就是成长,这就是经验,在通俗的说这就是钱呀;

以上就是小编碰到不会的bug分析的过程,这个流程在小编这用的很成熟了,一般再难的bug,比如内核级别的bug,代码根本就不是自己写的,甚至根本就看不懂写的什么,我用这个方法最慢也就三天的时间,当然说是出现问题这一块说是一清二楚也不可能,不过应付比较着急的项目没有问题的;好了就说这些朋友如果有什么好的解决bug的流程也可以留言分享一下,感谢各位的阅读

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-06-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构

架构的演进, 阿里资深Java工程师表述架构的腐化之谜

1855
来自专栏小巫技术博客

如何开发一个App

1143
来自专栏IT大咖说

史上最详细的新浪广告系统技术架构优化历程

内容来源:2017 年 08 月 10 日,新浪广告开发技术专家徐挺在“第二届APMCon中国应用性能管理大会【大规模网络架构优化专场】”上进行的《新浪广告系统...

753
来自专栏互联网数据官iCDO

Facebook广告的15种优化方法

译者:吕东昊 审校:董梁 本文长度为4359字,预估阅读时间8分钟。 我们今天要向大家介绍的是Facebook广告的15种优化方法 Facebook广告对您来...

4544
来自专栏IT大咖说

“双态IT”架构下的自动化运维

摘要 在“双态IT"的架构下,传统业务与创新性业务两种截然不同的业务形态如何统—管理成为了运维人员现在面临的最大挑战。本次演讲旨在探讨对两种业务形态进行统—管理...

2975
来自专栏ThoughtWorks

2015.1 技术雷达 | 技术篇

许多项目都存在外部代码依赖,这些依赖中很大一部分是由开源项目提供的。为了确保构建过程可被重现,我们总是与固定版本的外部依赖进行集成。但这就意味着我们与这些类库的...

3437
来自专栏腾讯云数据库(TencentDB)

腾讯云数据库智能化海量运维的建设与实践

作者介绍:鲁越,腾讯云数据库架构师团队负责人,主要负责腾讯云数据库MySQL、Redis、Oracle等数据库售前架构、运维、调优等工作,曾就职于网易和尼比鲁。

99137
来自专栏Java架构

架构的演进,阿里资深Java工程师表述架构的腐化之谜

新技术层出不穷。过去十年时间里,我们经历了许多激动人心的新技术,包括那些新的框架、语言、平台、编程模型等等。这些新技术极大地改善了开发人员的工作环境,缩短了产品...

41610
来自专栏大数据架构师专家

运维所需技能体系

产品研发有自己的生命周期: 设计阶段---开发阶段---测试阶段---部署阶段---线上运行阶段---下线或者回滚阶段。

882
来自专栏极乐技术社区

干货 | 小程序商城开发必读指南!

商城开发指南 ? ? 微信小程序商城模块 | 链接 使用zanui开发小程序微商城(模板组件的开发规范)| 链接 ecshop商城开发:用户信息的获取和缓存...

4585

扫码关注云+社区