您的位置:首页 > 职场人生

程序员技巧---调试

2016-09-22 11:07 246 查看
索福克勒斯在他的《埃阿斯》中有这样一段话:

这是痛苦的事:

看着你自己的烦恼,并且知道

不是别人,而是你自己一个人所致

自从14世纪以来,bug出现之后,就一直纠缠着程序员们。几百年来也证实了没有人能写出完美的软件,所以调试肯定要占用绝对大量的时间。既然无法避免,那就坦然面对,逢敌必亮剑,狭路相逢勇者胜。

心理

发现bug后,不要去指责肇事者,你应该专注于修正问题。不论bug是谁的过错,你发现了它,它就是你的问题。

从何处开始

在开始查看bug之前,要确保你是在能够成功编译的代码上工作———–没有警告。把时间浪费在设法找出编译器能够为你找出的问题上没有意义!我们要专注于手上更困难的问题。

橡皮鸭

找到问题的原因是一种非常简单、却又特别有用的技术是向别人解释它。他应该越过你的肩膀看着屏幕,不断点头,就像澡盆里的橡皮鸭。他们一个字也不需要说;你只是一步一步解释代码要做什么,常常就能让问题从屏幕上跳出来,宣布自己的存在。下面,让我来为你介绍一个程序调试大法——“橡皮鸭程序调试法”,这个方法在调试界是很出众的,实施起来相当方便和简易,几乎可以随时随地地实验,几乎不需要借助任何的软件和硬件的支持,你甚至可以把你的程序打印出来,在纸面上进行调试。

那么,为什么这个方法要叫做橡皮鸭呢?因为橡皮鸭子是西方人在泡澡时最喜欢玩的一个小玩具,所以,这个东西应该家家户户都必备的。因为,这个方法由西方人发明,所以,就被取名为“橡皮鸭”了。

好了,话不多说,下面是整个调试方法的流程。

找一个橡皮鸭子。你可以去借,去偷,去抢,去买,自己制作……反正你要搞到一个橡皮鸭子。

把这个橡皮鸭子放在你跟前。标准做法是放在你的桌子上,电脑显示器边,或是键盘边,反正是你的跟前,面朝你。

然后,打开你的源代码。不管是电脑里的还是打印出来的。

对着那只橡皮鸭子,把你写下的所有代码,一行一行地,精心地,向这只橡皮鸭子解释清楚。记住,这是解释,你需要解释出你的想法,思路,观点。不然,那只能算是表述,而不是解释。

当你在向这只始终保持沉默的橡皮鸭子解释的过程中,你会发现你的想法,观点,或思路和实际的代码相偏离了,于是你也就找到了代码中的bug。

找到了BUG,一定要记得感谢一下那个橡皮鸭子哦。

什么?你觉得这个方法太“愚蠢”,太“弱智”了?是的,看上去,会这样做的人脑子好像是有点毛病。不过,我要告诉你的是,这个方法的确有效。因为,这就是“Code Review”的雏形!下面让我来给你解释一下。

Once a problem is described in sufficient detail, its solution isobvious.

一旦一个问题被充分地描述了他的细节,那么解决方法也是显而易见的。

我相信在座的各位都有过这样的经历,当你死活都找不到问题的原因的时候,当你寻求他人的帮助时,对别人解释整个你的想法和意图或是问题背景的时候,你自己都没有解释完,就已经找到问题的原因了。这样的经历,相信大家一定有过。这就是这个方法的意义所在。

所以,“橡皮鸭”只是一个形式,其主要目的是要你把自己写的代码做“自查”,也就是自己解释给自己听。当然,为了不让你像个“精神分裂”的程序员,引入“橡皮鸭”是很有必要的(虽然这样还是有点精神病,但比起精神分裂来说算是好的了,嘻嘻)。所以,真实的本质是Code Review。

最后,我想和大家说一下道具“橡皮鸭”。是的,在我们的身边,你不一定能找得“橡皮鸭”,但你可以找到你你的同事,你的朋友,来做这个“橡皮鸭”,当然,他们并不一定有“橡皮鸭”好使,因为你的那些同事或朋友一定会在你解释的时候,随意地发表意见和看法,相当的令人annoying。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  程序员 调试 软件 bug