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

依然记得上一节编程课的时候,老师说过一句让我一直到现在都还记得的话“只要是软件,就一定有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 条评论
登录 后参与评论

相关文章

来自专栏ThoughtWorks

2015.1 技术雷达 | 技术篇

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

3487
来自专栏极乐技术社区

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

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

6785
来自专栏用户3254834的专栏

干货丨小程序功能解读白皮书(三)

满足用户更多需求,增强商家小程序用户粘性。小程序之间的跳转,不仅可以打开另一个小程序的首页,还可以打开另一个小程序的任何一个页面,这让小程序之间的功能连接更自由...

962
来自专栏IT大咖说

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

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

3565
来自专栏企鹅号快讯

服务器租用、服务器托管、云服务器哪个好?

服务器租用、服务器托管、云服务器代表了云计算公司对企业客户提供的三种不同模式的服务——物理云,托管云和公有云。云计算虽然技术门槛比较高,对于非专业人士比较神秘。...

8686
来自专栏携程技术中心

干货 | 每天TB级数据处理,携程大数据高并发应用架构涅槃

互联网二次革命的移动互联网时代,如何吸引用户、留住用户并深入挖掘用户价值,在激烈的竞争中脱颖而出,是各大电商的重要课题。通过各类大数据对用户进行研究,以数据驱动...

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

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

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

1K37
来自专栏TEG云端专业号的专栏

海量存储第一弹 - 自动化运维

架构平台部(后面简称架平)承载的业务涵盖了腾讯主要的海量存储、CDN场景,譬如微信聊天图片&视频、朋友圈图片&小视频、空间相册图片&视频、腾讯视频点播&直播、腾...

4204
来自专栏美团技术团队

数据库智能运维探索与实践

近些年,传统的数据库运维方式已经越来越难于满足业务方对数据库的稳定性、可用性、灵活性的要求。随着数据库规模急速扩大,各种NewSQL系统上线使用,运维逐渐跟不上...

1281
来自专栏叁金大数据

数据库和数据仓库你应该知道的

Hive作为Hadoop生态圈重要的一员已经被我们所熟知,它作为一个基于Hadoop的数据仓库工具,用来做离线的数据分析工作。那么什么是数据仓库,它与我们经常使...

1142

扫码关注云+社区