程序员与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调试经历,你是否有遇到呢?你曾经经历过哪些哭笑不得或者趣味十足的代码调试经历,留言告诉播妞吖~

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

  1. Java程序员应该知道的10个调试技巧

    摘要:调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试 ...

  2. windows程序员进阶系列:《软件调试》之O--- WinDbg使用介绍

    windows程序员进阶系列:<软件调试>之O--- WinDbg使用介绍 拥有一个顺手的武器是每一个武林高手梦寐以求的.对于windows程序员来说,WinDbg调试器就是我们的武器.熟 ...

  3. 10年程序员经历总结及后续规划

    十年程序员经历总结 2011年从学校毕业偶遇网页游的戏兴起,有一款SNS游戏叫开心农场,前端技术使用Flash,于是选择加入Flash大军,先去了一家小公司,接触了不少Flash类型的项目: 企业开发 ...

  4. 网友们碰到过的最难调试的 Bug

    在 Quora 上有一个和 Bug 相关的热门问答帖:<What's the hardest bug you've debugged? | 你调试过的最难 Bug 是?>. 我大中国的程序 ...

  5. 十二年来最强购房潮:报价 6 次,疯狂加价,华人程序员在硅谷买房太难了!...

    作者 | Amelie 出品 | 硅兔赛跑(ID:sv_race) "12年来硅谷最强购房潮显现,上次那波在2018年高位站岗的购房者今年要回本了." 要说到硅谷这个寸土寸金的地方 ...

  6. 想转行做程序员?转行不难,难的是以后不后悔。

    我自从入了程序员这行,时不时就会被问到: "听说程序员收入不错,我也想转行当程序员,你觉得我适合吗?" "不是计算机专业的,怎么走好程序员之路?" " ...

  7. 从3K到30K这个程序员经历了什么

    记得上次有人问过我30K的程序员日常都会干些什么,什么时候才能到你这样.首先我技术其实很菜的,只能说我很幸运而已,其次我根本没法回答这个问题,因为每个人所走的路不一样所追求的也不一样.17岁来到这座城 ...

  8. 程序员这条路很难走,你还要坚持下去吗?

    可能很多人都觉得程序员是个高薪行业,动不动就听见谁月薪几万几万,心里羡慕不已.回头看自己每个月手里可怜的工资条,心里更是烦躁不已,于是乎下定决心一定要像人家一样,月薪几万.但是实际上,高薪程序员并不像 ...

  9. 如果我告诉你,程序员这条路很难走,你还要坚持走下去吗

    可能很多人都觉得程序员是个高薪行业,动不动就听见谁月薪几万几万,心里羡慕不已.回头看自己每个月手里可怜的工资条,心里更是烦躁不已,于是乎下定决心一定要像人家一样,月薪几万.但是实际上,高薪程序员并不像 ...

  10. 如果我告诉你,程序员这条路很难走,你还要坚持下去吗

    可能很多人都觉得程序员是个高薪行业,动不动就听见谁月薪几万几万,心里羡慕不已.回头看自己每个月手里可怜的工资条,心里更是烦躁不已,于是乎下定决心一定要像人家一样,月薪几万.但是实际上,高薪程序员并不像 ...

最新文章

  1. java基础学习总结——接口
  2. vue源码解析之选项合并(二)
  3. DBD::mysql::db do failed: Table cl_access was locked with a READ lock and can't be updated
  4. Python——常用模块
  5. 用css3制作旋转加载动画的几种方法
  6. CV与IP:基础,经典以及最近发展
  7. php table 下拉框,LayerUI的table 里面加 select 下拉框 – Fly社区-Mikel
  8. python一节课多久_第一节课 python简介
  9. Kuboard云原生管理工具
  10. html 响应式 meta,HTML - 移动端 meta viewport
  11. 在真机上 模拟GPS
  12. 免费提供离线地图部署服务
  13. POI实现合并单元格
  14. 多线程读文本写入OracleNoSQL数据库
  15. c语言大小写字母变换,C语言学习:任意大小写字母转换
  16. python中的result是什么_《python中result什么意思》电影_python中result什么意思BD高清完整电影在线...
  17. Only one expression can be specified in the select list when the subquery is not introduced with EXI
  18. MongoDB——GridFS
  19. 2020年有寓意的领证日期_2020有寓意的领证日期 2020有意义的领证日子 - 中国万年历...
  20. python 赌场掷骰子游戏

热门文章

  1. linux如何安装php,linux下怎么安装php
  2. 埃特金方法c语言,C语言通用范例开发金典(含光盘1张)
  3. word2019关闭时无响应
  4. sata接口 图解 定义_【sata硬盘三个接口】sata硬盘接口图解_sata硬盘接口电路
  5. VMWARE启动失败
  6. Air202学习(4)官方例程(luat版)
  7. B站粉丝计数器 | ESP32轻松学(Arduino版)
  8. 畅捷通李鲲:云让自然语言处理在企业更快落地
  9. 微信支付服务器白名单,微信测试号白名单怎么回事?如何进行微信支付测试?
  10. 狗年出生的宝宝取名都有哪些注意事项呢?起名真不是简单事