当前位置:C++技术网 > 资讯 > 如何提高找Bug的效率,提高找Bug的速度

如何提高找Bug的效率,提高找Bug的速度

更新时间:2016-01-05 18:38:39浏览次数:1+次

    我分享一下我经常是如何找Bug的。因为经常找Bug开始是激情四射,然后找着就迷茫了,然后就伤心了,然后就犯晕了,最后崩溃了。以至于后来,一旦到找Bug到迷茫的时候,就停下来了。然后很快就找得Bug了。
    为什么停下来呢?停下来不是不找Bug了,而是冷静下,从逻辑里跳出来,然后再慢慢的理顺思路,再找Bug。往往这样就找到了不少Bug。
    我分析了下我找Bug的心理过程,开始还算不错,然后始终找不到问题,就开始质疑眼前所看到的一切,然后到处都觉得有问题。任何一个地方都觉得在作怪,都有点草木皆兵了。
    每一个程序员的心一定要是刚而韧的。因为在找Bug的过程中,一定是会让你沮丧不已的。唯有刚强,才能让你能够在Bug的海洋中,坚定的前行。唯有韧性, 可以让你百折不挠。即使一次次被击败,只要有一点线索,又会奋勇冲上前线。可能是在睡觉时候突发灵感,找到线索;可能在吃饭的时候,嚼着饭嚼出了思路;也 可能在蹲茅坑的时候打通了脉络。这是一种韧性,或者说是一种超韧甚至有点粘性了。粘到了这个问题,不解决誓不罢休的态度,最终可能就克服了问题。
    然而并不是每一次都能找到Bug的,可能在之后一天、一周、一月甚至一年,随着你的水平提高,或者你的细心爆发,你对于技术的把握更为全面或者洞察力更加细致,你或许就想起当年的一个Bug到底是什么了。这个真不夸张。我就有这么样的经历。
    并不是每一个Bug你都能够解决的,所以,当你在出现迷茫的时候,请停下来。不要走到伤心痛心之后,一看到想到这个功能或者这个技术点,就觉得心里隐隐不 安,形成技术阴影。甚至有些人,因为一些问题太难搞,搞不出来,快崩溃了,而这个功能又必须由他来解决,无法逃脱。既然在技术上逃不了,最后就辞职了。
    找不到Bug有两种原因,一个是水平不够,一个是不够细心。这两个都是优秀程序员必须具备的,即高水平,超细心。有了这两个保证,找bug那真的不会太 难。通过看错误提示,就能够快速断定问题的所在。或者提示看不出来,则可以自己设定测试点,使用完善的测试逻辑代码来测试,也可以很快的确定Bug。
    所以,如果这个Bug客观的在你的能力范围之内,然而你焦躁不安,急功近利,则会适得其反。当你发现找bug到了迷茫,不知从何下手的时候,也就是你之前 怀疑的地方都找不到问题的时候,请停下来。停下来之后,不要找这个问题了。可以放松一下,然后再来从整个功能的逻辑开始来想想,然后将功能点分成小小的单 元。也就是对一个综合功能的大功能分成许多的小功能的组成模块,一个一个小模块来检查。
    在实现一个综合功能的时候,特别是一个功能有几部分合作完成,我们在完成每一个部分的时候,都确保这个部分时正确的逻辑。至于还出错,则不是这个部分的问题。这样可以很理性的把问题缩小范围。
    记住一点,每一个小部分的逻辑是简单的,你确定好这个逻辑是正确的,就不要在这个逻辑里纠结了,而是去调查其他部分。这样调查效率很高,高效排错必须如此,程序员必须很理性的高效率的解决问题。
    因为一些时候,我们也懒得去分析一些参数的输入和参数的输出,而喜欢使用测试的方式达到逻辑。这样你就不用去分析什么细节。反正最后的结果可以达到你输出 的效果。这样的是可以碰运气,然而复杂的问题,是你无法通过尝试的方式来得到想要的输出的。所以,不要在找Bug时靠运气!
    我在实现一个功能时就犯晕了,然后我很快就停下来了。然后仔细分析了这个整体的功能的组成部分,然后将每一个部分检查一遍,实现可靠的支持。而不是每一个 部分都不确定是不是正确的。一个功能是哪样就是哪样的,确定下来之后,再去确定其他的,此时就根据之前那个确定的正确的模块为基础来分析,逐一的将整个功 能逻辑理顺一遍。然后在这个过程中,我就突然发现了一个问题,也就是找到了Bug。而之前都是稀里糊涂的,感觉一片混乱。因为我知道这个是一个简单的功 能,然而逻辑却混乱不堪。我知道这样的效率是很低的,所以就做了一遍思路重新审视。开始做这个功能的时候就没有设计,因为不难,只是在大脑形成了一个模糊 的思路,然而在实现时则是很具体的。所有有些细节就没有考虑到,因此达不到自己的要求。
    当然,本文也是随心而写的,所以没有一条条的去陈述一个试试。只是想让你能够意会的意思,不需要记忆。真正的领悟了,就可以了。因为在你自己实践的时候,你一定还有很多你自己的感受,每一个人都不一样的,所以不需要记忆我说的每一句话,只要领略大意即可。
    最后声明一下,这些经验只是针对没有调试经验,没有找Bug经验的同学,如果你是经验丰富的,不必评价本文。当然如果能够分享你的经验,自然是再好不过 了,一起学习。说明这个过程,也是给没有经验的人一个参考,发现Bug找不出来的时候,不必沮丧,这是程序员历练的一个基本的过程。也不是所有Bug都是 你能找得到的。找不到就说明你的水平和洞察力以及逻辑分析能力或者说思维不够清晰,都是需要在这些过程中得到锻炼。重要的是,你需要意识到这个问题,就不 需要苦苦的为了一个bug搞憔悴了。
    程序员最心疼程序员了。所以,请君珍重,找Bug时,不要陷入其中。适当的时候,可以向人求助。最好是自己整理思路,再出发。加油吧。