那一夜,你伤害了我……

前两天,小编用程序员们开发的系统搞事情。

然后,发现了bug

然后程序员们跟这个bug搏斗了许久,终于好了。

就在刚才,对,小编又不小心又发现了bug

……不说了程序员要打死我了。

那么,遇到bug的时候,都有什么办法解决呢?

小编整理了一些隐藏的大神的回答。

@匿名

@YY

1. 注重逻辑性 

首先,你要定位 bug,不要做没有证据的结论。

如果你有猜测,就去证实或者否定它。

比如某次,同事代码返回的数据有问题,认为是缓存用的 Redis 有问题,返回了错误的数据。

然而没人去对此猜测进行求证……

我去确认了一下,Redis 收到了请求,并且响应正常。

真相就是,代码里有个 } 的位置放错了,因为它刚好在一屏之后的位置,所以没有人发现……

2. 基本的方法论

比如二分法。

比如最小化测试用例。

如果你要提问,不管是向搜索引擎还是向人,你都需要提出正确的问题。

3. 知识面

你写 Web 后端的话,普通的 HTTP 得懂,浏览器的开发者工具得会用。

简单的 JavaScript 也有会点儿。

简单地说就是,你要精于你自己主攻的部分,然后要熟悉你的上下游。

再比如如果你使用 CPython 的话,你要准备一份 CPython 的源码,并且要能够流畅地阅读 C 代码。

4. 工具

工欲善其事,必先利其器。

一大堆调试用的工具,你至少得知道它们能干什么,需要的时候能用。

比如 strace、lsof、gdb、git bisect,还有 sysdig、systemtap、perf 等。

当然还有一堆不是专门为调试而设计的通用工具,比如 the silver searcher 或者 ripgrep。

一个快速的全文搜索工具能帮你在最短时间内找到相关的代码或者日志。

你不必成为正则表达式大师,但是简单的一定要会。不然面对上千个匹配结果你要怎么办呢?

@jim jin

先试试以下步骤:

1. 换个环境试试

2. 换个用户试试

3. 换个操作方法试试

4. 换一下数据试试

5. 换个浏览器试试

6. 换个版本试试

7.换个人操作试试

下面列出一些常见的疑难BUG类型以及每种BUG的诊断方法:

1. 输出结果与预期不符

这种BUG一般都是由于代码逻辑错误造成的。

如果能在开发环境重现,最好解决方法就是单步调试,设定每一步代码的预期结果。

然后跟踪判断实际结果是否与预期结果一致。

如果在开发环境无法重现,无法单步调试的,可以采用添加输出日志的方式判断哪一步的问题。

2. 系统异常报错

这种情况下需要提取日志,找出错误堆栈信息。

这时候最重要的事情是要把堆栈信息看懂、看完整。

往往堆栈信息是一个套一个输出的。

比如Java里面表象上看是一个NullPointer Exception,但是如果你看到底,就会告诉你到底是什么错误引发了这个NullPointer。

3. 系统Crash

这个问题常见的原因是负载过高、并发过高、或者配置错误。

最常见的就是内存溢出。

这时候要首先排除配置错误的原因,主要靠查看Crash Log来分析原因。

如果Crash Log没有有用的信息,就得排查硬件、内存、网络等方面的设置,看是否有配置错误的地方。

再找不到就在测试环境用开发模式进行压测和调试。

4. 系统响应缓慢

这种问题一般是存在资源竞争或者系统资源不足的情况。

最后,如果某个地方出现BUG实在找不出什么原因,那就上我们的绝招——“小黄鸭调试方法”吧。

去买一只小黄鸭,就下面这样的,注意个头不要太大。

把小黄鸭放到电脑屏幕上方,就下面这样的,最好面对着你。

打开你出问题的那段代码,面对小黄鸭。用手指着代码。一行一行的给它解释一下这行代码是干什么的,为什么这么写。

现在你知道问题所在了吗?


各位程序员,小编只能帮你们到这啦!

祝大家天天开心,永远没bug~


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • 婉婷得知消息后,请假回家了。 她刚进家门,婆婆就告诉她,服务员回家里吃饭来了,她一阵眩晕,“怎么能让陌生人来家里呢...
    鸣鸥阅读 1,292评论 4 10
  • 这篇文章的作者是iOS Tutorial Team 的成员Matthijs Hollemans,他是一个经验丰富的...
    南京在下大暴雨阅读 1,444评论 0 3
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,077评论 25 707
  • 时间过得好快,一转眼,我已经毕业了七年。 浑浑噩噩。就感觉还是在昨天。这些年我也没挣到什么钱,就是娶妻了,然后闺女...
    捧捧阅读 203评论 0 0
  • “曾经的苦痛都随风而去,可我感觉却那么悲伤,岁月留给我更深的迷惘……”一首汪峰的《春天里》打开了我记忆的闸门,曾经...
    风雪鹰阅读 362评论 0 5