你遇到过的最复杂的bug是什么?你是怎么解决它的?

尼克徐 发布于 2014年10月14日 | 更新于 2016年08月08日
tinyfool 等1人欣赏。

啊哈,我来抛砖引玉

在做保险数据计算引擎时,我做了一个表达式解释器,这个表达式解释器对正常的表达式执行的还不错,但是对出错的表达式报错信息不完整,还经常crash。由于用的是类似堆栈结构执行,所以很难捕捉到错误原因。

为此我到处搜索,最终找到了一个W3Eval,http://www.ibm.com/developerworks/cn/java/j-w3eva/ 该表达式解释器可以用来做表达式的静态检查和单步执行,报错信息非常丰富,精确到表达式的某个位置的信息。

源代码是java的,我把它用c语言实现了一遍就解决了此问题。

alt text

共7条回复
netdigger 回复于 2014年10月14日

大概在06年,调试一块板子,发现向内存写数据时,会被写入随机的数据,而且不是每次发生,前前后后,断断续续调试了大概3个月。

最后怎么发现的呢?公司买了一台新的示波器,然后我就插到板子上,发现波形照旧,看不出啥问题。有点自暴自弃,就乱拧那个倍率旋钮。当波形放大到最大后,突然发现CPU的write enable引脚上面的波形后面紧跟着一个杂波。然后。。。原因就找到了,然后就通读CPU手册,厚厚上千页的设置手删,终于发现在某一个register的某一个bit设置有误。哭。关键这个值还是CPU手册推荐的。

尼克徐 回复于 2014年10月14日

1楼 @netdigger 赞一下!这个真心难。

generalzyq 回复于 2014年10月14日

1楼 @netdigger 一个bit的错误,牛逼!

liujin834 回复于 2016年08月08日

原生的php回调不是异步,最后换了Nodejs

tinyfool 回复于 2016年08月08日

我帮很多团队解决过bug,在我看来,没啥太复杂的bug,我只有在新学一个语言的时候,因为语法不够熟练,会遇到一些难缠的bug,但是语法一旦熟悉就很难被困住。

当然,我说的是当你要解决bug的时候,不知道有bug的情况,我也没办法,要等它冒出来

:)

abigfrog 回复于 2016年08月08日

1楼 @netdigger 在一堆文字中发现了一个bug “册”写成了“删”

tinyfool 回复于 2016年08月08日

6楼 @abigfrog 看样子他是五笔用户

登录 或者 注册