你有哪些解决bug的技巧?

常见的解决bug的方法有: 1)调试; 2)排除法; 3)打印。 你还有哪些解决bug的技巧,能够快速定位并解决问题?
关注者
870
被浏览
43,786

50 个回答

诶,被邀请了是不是应该先答一句:谢邀思密达。
咳咳,这部分装完了,尽量撤点干货吧。
1.不聊语言的话,从debug方法来看。
2.具体到语言,聊聊debug这些东西。
-------------------------------------------------------
不聊语言的话,从debug方法来看:
1.printf大法好。
2.断点调试也不错的。
从bug粗线的问题原因来看:
1.编译层的问题。
其实就是语法,语义的问题。
比如类型转换搞错了,比如你把一堆非全数字的String值转成int,分分钟跪掉。
其实这个是最简单的bug,这里最多的就常见的就是空指针了。
2.逻辑层的问题。
逻辑层问题就是你代码语法语义都对,但因为你个人逻辑错了或者对代码理解不清,导致的错误,但是这里问题就多了,而且还容易各种debug崩溃。
比如这种的。
你会发现尼玛怎么flag分分钟都是true。那你少写了一个else能不出bug么?
还比如这种的。

你会发现尼玛怎么数据就是对不上!那你没整明白in.readline()的用法能不出bug么?
还比如这种的。
你从PHP服务器上抓时间戳数据。在Android上直接转换。
你会发现尼玛数据就是不对,那PHP时间戳转化到java需要补全后三位这事你不知道能不出bug么?
下面具体聊聊debug这些东西。楼主分类提到了前端开发跟Android开发,那就聊聊这俩吧。
--------------------------------------------------------
1.善用各种工具。
比如Android开发的printf就是LogCat。最开心看到红色了好么!因为出来这个基本IDE已经帮你定位好了。

前端开发就依浏览器不同效果不一了,其实都是用开发者工具调试。我比较喜欢用chrome。分分钟找错误。

-------
一年前的答案了。最近准备更新下。先mark下
硬看,就是盯着代码看,让代码在脑子里面执行。
------
说明一下,这里主要指的是工具帮不上忙和已经通过工具得到一些基本信息之后的情况,我想有相关经验的朋友肯定明白是怎么回事。我就不说一些系统性的方法了,比方用自动化测试在 revision 里面折半重现,困难的 bug 一般没有这么好的条件去搞。
推荐一个日本人的书《Debug Hacks》,中国人里面似乎有个非常有名的捉虫能手,据说也出了书,请知道的知友指教。