程序员经历过的最难调试的Bug是什么?

程序员与Bug是一对相爱相杀的存在,既要在解决Bug中get成就感,同时也讨厌自己亲手写的代码出Bug。”程序不息,Bug不止”,程序员在与Bug的斗争中,也有很多有趣的事情发生,播妞总结了程序员调试Bug的种种传奇经历。



01  


@网友王译:

当时我们在做 Egret Runtime 的第一个版本,可以理解为他就是一个 Android GLSurfaceView 渲染器。


当我从开发工程师手中拿到第一个新鲜出炉热乎的开发版的时候,我发现一个现象,就是游戏整个 App 会不时崩溃掉,crash日志大概描述的是 C++ 挂掉了,当时我由于经验不足,还不会根据 C++ 的 dumpstack 去检查是哪个模块的问题。所以我决定先尝试重现一下这个问题。


重现步骤:


1、把手机放在桌子上,打开 App,观察5分钟,未崩溃

2、5分钟的时候接了个电话,接完后 App 崩溃

3、意识到可能是 Android 生命周期问题导致的,于是重新打开 App,反复在前台 / 后台切换,未崩溃

4、由于长时间弯腰盯着桌子上的手机,有些不舒服,于是把手机拿起来,想舒服的后仰坐在工位上继续重现,然后在把手机拿起来的一瞬间,崩溃。

5、吓一跳之后,小心翼翼的重新打开 App,思索自己刚才到底做了什么,同时紧握着手中的手机继续盯着屏幕,观察5分钟,未崩溃

6、心情暴躁,把手机扔到桌子上,崩溃

7、惊愕......

8、重新把手机拿起来,再次扔到桌子上,崩溃

9、给开发的同事讲,我重现出了这个BUG,只要用力把手机往桌子上砸一下,就会崩溃

10、开发同事匪夷所思的表示没有调用过陀螺仪之类的 API,只是个简单的渲染。

11、现场演示狠狠的砸了一下我的手机,崩溃重现

12、开发同事狠狠的砸了一下他自己的测试机,未重现,于是拿过来我的手机,进行真机调试( 每次调试就要砸一下我的手机....请自行脑补我的表情)

13、最后发现,原来是当手机被狠狠砸一下的时候,屏幕旋转方向发生了改变,然后触发了 OpenGL 底层渲染的问题没有 Handle 住 ...... 

14、用3分钟修复了此问题,然后对着被砸了20多次的手机泪流满面.....



02   


@网友条件状语从句:

写JS,手机没电了,用同事老张的安卓机调试,非常简单的获取用户微信昵称,结果就是死活获取不到,一直显示null。也许是跨平台问题,因为之前在自己iPhone上是没出bug的,拼命看api文档,但都没提到这方面。急死我了。


刚刚老张告诉我他的昵称就是null





03   


@网友王杰:百分之百出现的bug都是好bug,多线程里的能重现的bug都是上帝给予的惊喜!



04  


@网友weishuo1999:某大型电商平台,突然有一天,收到C2C店主反馈,看到的订单不是自己的,看到后台的商品列表也不是自己的。当时在睡午觉,看到这个问题,立马吓醒了,平时5个投诉就是一个故障单,那还都是一点体验上的小问题,这种订单混乱,商品混乱的错误,真是要紧急死了。

于是,主管,总监都来看这个问题,一群大佬在后面看着,赶紧找最近几天的发布,测试情况,一个个回退,一个个检查,最后都无法解决问题。后续又有用户来投诉,直接电话联系,远程控制电脑,发现操作起来巨慢,于是顺口问了一下用户的网络是什么网络。

结果他说是:”某城宽带”,一瞬间,有点感觉了,继续问其他几个投诉的客户都是”某城宽带”,然后我们打电话到那个宽带的运营商,得到的回复是”年底了,为了省流量,他们做了一部分缓存”

他们做了缓存

做了缓存

缓存





05   


@匿名网友:

说一个前几天事情想拿刀砍死同事的事情

背景是这样:我们是做客户端游戏的,当单元测试过完后,整合起来走整体流程的时候,发现运行模拟器是黑屏的,一看就是出BUG了,连游戏的FP画面都没有绘制回来,

于是乎查看运行记录,看抛出的异常,我丢,根本就没有异常,可以排除没有下载到FP的图片(抱歉由于是公司正准备上线的项目,所以体谅下不好截图),难道是某个同事在被程序员鼓励师“鼓励”的时候,手贱没有throw出异常吗?于是一项一项在代码中找,在排除有抛出后,那我就重头来吧,有读取引擎中的下载和绘制,有存档新用户的log信息,有获得资源版本号,难道是测试服务器堵塞了?

于是又root进服务器,查进程,查占用资源等等,一切经验都无能为力而感到绝望,只有去问写这个页面和框架的人一起询问下,结果是由于美工的FP图片出问题,所以就把FP的页面背景全部绘制成黑色了,而且还忘记在上面用程序字体写上“此处是FP”,顿时心里就一万条草泥马跑过,连第二天上班望那位页面小哥都是充满敌意的,分分钟想砍翻他。

附第二天聊天记录



06  


@网友李意扬:

全国电子设计大赛,比赛做逆变器相关,做出来效率大于100%,找不出原因,评委也找了半天找不出原因。然后就给了一等奖。


07   


@网友shuson:那是一个大雪纷飞的傍晚,农历大年二十九的傍晚,我站在回家的春运绿皮车内,包里装着一叠实习结束后发的工资,心里想着回家可以给爹娘买添置年货了。

这时候,电话响起来了,是测试组长打来的,接不接?可是漫游啊,接吧!因为组长都给我打电话了,肯定问题严重。接通后他第一句话就是,看QQ群信息,log已经分享到群里了,然后简单了描述了一通。

我撂下电话,打开qq,别问为啥没笔记本,因为我没钱买。借着N72的2寸小屏,我打开了txt格式的log,加载了好久,心疼流量。bug是在保存用户资料的时候,填入的用户出生年月日没有保存。像这样的问题,要是在公司,首先去看数据库,然后再看代码。

可是测试那边的人为了着急回家肯定就先甩锅咯。根据log,没啥异常。我回复说log没毛病。那边就着急了,让我凭空跑一遍流程。我擦咯,大脑需要虚拟出来vs,还需要虚拟出来数据库表,还要虚拟asp页面结构啊。

要知道,code不是我写的啊,数据库表也不是我建的,页面也不是我切的,我只是个实习生,看了三个月代码而已。

任凭记忆穿梭,我告诉组长,可能是页面上展示逻辑问题。组长重新接过锅,准备甩向前台同学了。

至此,我快到家了。


以上程序员遇到的充满玄学的Bug调试经历,你是否有遇到呢?你曾经经历过哪些哭笑不得或者趣味十足的代码调试经历,留言告诉播妞吖~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值