`
jiaoronggui
  • 浏览: 1331826 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
B7c2eb31-a8ea-3973-a517-d00141f39b89
项目管理软件-redmin...
浏览量:116533
4a63e153-250f-30f6-a051-97cfc67cb3d3
IT职业规划
浏览量:199523
社区版块
存档分类
最新评论

程序员新人怎样在复杂代码中找 bug?

 
阅读更多

1. 优先解决那些可重现的,可重现的bug特别好找,反复调试测试就好了,先把好解决的干掉,这样最节约时间。

2. 对于某些bug没有头绪或者现象古怪不知道从哪里下手,找有经验的同事问一下思路,因为在那种开发多年的大型系统里,经常会反复出现同样原因的bug,原因都类似,改了一处,过一阵子另外一处又冒出来,而且无法根治。
比如:我那个系统里有个特别危险的API,接口参数比较难用,一旦有人用错了某些情况下就会出诡异的现象,解决很简单,找到调用这个API的地方把调用方式写对就好了。为什么不根治呢?因为要保持兼容性不能改接口了。Windows系统里就好多这种烂API。
问下老员工吧,说不定他们都遇到过好多次了。

3. 放大现象,有些bug现象不太明显,那么就想办法增大它的破坏性,把现象放大。这只是个思路,具体怎么放大只能根据具体的代码来定。
比如:美剧《豪斯医生》里有一集,怀疑病人心肺有问题,就让病人去跑步机上跑步,加重心肺负担,从而放大症状。

4. 二分法定位,把程序逻辑一点点注释掉,看看还会不会出问题,类似二分查找的方法,逐步缩小问题范围。

5. 模拟现场,有时候我会问自己,如果我要实现bug描述的现象我要怎么写代码才行?
比如:我遇到一个死锁问题,但是检查代码发现所有的锁都是配对的,没有忘记解锁的地方,而且锁很简单就是一个普通的临界段,保护几行赋值语句而已。这样的代码怎么写才能让他死锁呢?
我想如果让我故意制造这样一个现象,只有在上锁的时候强制杀掉线程了。
既然这样就可以去看看有谁强杀线程了没有。

6. 制作工具,针对某些bug编写一些调试辅助工具。
比如,我那个系统没有完善的崩溃报告,虽然也有dump,但是分析出来的callstack经常不准。于是我为解决崩溃问题编写了个工具,会自动扫描代码,在每个函数入口和出口插入log,以此来定位崩溃点。

7. 掩盖问题,虽然这样做有点不厚道,但是有时不得不这么做。有些bug找不到真正的root cause,但是又要在规定时间内解决,那么我们就可以治疗症状而不去找病因。比如用try catch掩盖一些奇怪的崩溃。不到万不得已不要这么干,未来可能会付出更大代价。

 

 

与本文相关的文章

====================================================

欢迎关注我的微信号@it51share

====================================================

1
5
分享到:
评论

相关推荐

    程序员新人怎样在复杂代码中找bug?

    Mentor说先从找code base中bug开始。但是我感觉我们的codebase好复杂,这几天突然没什么进展。uml之类的也画了不少。想问问前辈们有什么建议?  update:  感谢各位分享自己的经验。这段时间略有进展,来说说...

    程序员的代码的代码的代码

    在IT行业中,编程是程序员日常工作的核心,而代码的质量直接影响到软件项目的成功与否。"程序员的代码的代码的代码"这个标题可能是在强调代码的层次性、嵌套性或者递归性,暗示着代码间的相互依赖和复杂性。在描述中...

    程序员数学3 的源代码

    《程序员数学3》是一本专为程序员设计的数学学习书籍,其主要目的是帮助读者理解并应用数学在实际编程中的重要性。这本书强调易懂性,通过简洁明了的讲解方式,使得复杂的数学概念变得平易近人。尤其适合那些希望...

    女程序员征婚需求分析与代码

    女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码

    程序员佛祖代码注释.txt

    程序员佛祖代码注释,佛祖保佑,代码无BUG

    程序员新人成长动力(一个项目经理的早年手记).word

    标题中的“程序员新人成长动力(一个项目经理的早年手记)”揭示了这份文档的核心内容,它是一位有经验的项目经理对新手程序员的成长建议和自身早期职业生涯的反思。这份手记可能包含了他在编程、项目管理、团队协作...

    程序员记事本,供程序员保存经常用到的代码

    在编程领域,代码是程序员与计算机对话的语言,而程序员记事本则是程序员与代码对话的桥梁。随着技术的不断迭代和项目的日益复杂,代码片段的有效管理成为提升开发效率的关键。程序员记事本应运而生,它不仅仅是一个...

    程序员代码面试指南-代码

    书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失。...

    程序员表白专用代码

    - 在表白代码中,程序员可能会巧妙地运用数据结构(如链表、树等)和算法(如排序、搜索)来构造寓意深远的逻辑,比如用二叉树构建“你在我心中”的结构,或者用排序算法排序出“我爱你”的序列。 5. **嵌入式消息...

    程序员代码面试指南2-代码

    《程序员代码面试指南第二版2》是左程云编著的一本针对程序员面试中常见算法问题的指导书籍。这本书旨在帮助准备面试的程序员们提升在实际面试中的编码能力,掌握解决算法问题的关键技巧。配套的源代码文件进一步...

    程序员向妹子表白专用代码

    程序员们通常以其逻辑思维和解决问题的能力而闻名,但在特殊时刻,他们也能借助代码展现温情一面。 在描述中提到的"祝你们早日找到自己的soulmate(灵魂伴侣)`(*∩_∩*)′",这是一句充满祝福的话,暗示了这个...

    程序员之表白代码

    在IT行业中,程序员不仅以编写代码为日常,也常常利用技术来表达个人情感,比如“程序员之表白代码”。这个主题通常涉及到将编程语言与创意相结合,以独特的方式向心仪的人传达爱意。在这个实例中,“紫色背景恋爱...

    基于JavaScript实现的程序员表白爱心代码(2套)

    基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的...

    程序员表白代码之情人节快乐!

    在IT行业中,程序员通常以其独特的思维方式和技能表达情感,特别是在特殊的日子里,如情人节。"程序员表白代码之情人节快乐"这个主题,展示了他们利用编程语言和数字艺术来传达浪漫情怀的方式。下面,我们将深入探讨...

    程序员向妹子表白专用代码.zip

    这个压缩包可能包含了一系列精心设计的代码片段,这些代码在执行时会产生出令人惊喜的效果,以此来打动妹子的心。 首先,我们可以推测其中可能包含一种或多种编程语言的源代码,如Python、JavaScript、Ruby等。这些...

    黑马程序员ssm代码分享

    能学到什么:①工厂模式、策略模式、观察者模式等都是怎么在Spring中体现的; ②I0C、AOP、代理切面、循坏依赖都是如何设计和实现的。 阅读建议:此资源以开发简化版Spring学习其原理和内核,不仅是代码编写实现也更...

    8套 程序员表白代码

    在IT行业中,程序员通常以其独特的思维方式和技能表达情感,而“程序员表白代码”则是一种将技术与浪漫结合的独特方式。这些代码通常是用各种编程语言编写的,用来展示程序员的创意和对技术的热爱,同时也表达了他们...

    程序员像妹子表白专用代码

    9. **代码背后的情感**:尽管编程是理性的,但在这个过程中注入的创意和心意,是程序员向妹子传达情感的独特方式。通过代码,他们不仅展示技术,也在表达自己的情感世界。 10. **实践与分享**:程序员可以将这份...

    好的程序员如何写代码

    8. **生产力和管理成本**:他们的高生产力和对质量的把控,使得在长期项目、复杂任务中,好的程序员价值凸显。同时,他们的代码更易于管理,减少审查和修改的负担。 9. **持续进步**:好的程序员有成为更好的自己的...

    听说你的代码还在扑街?程序员小伙科普大厂常用代码管理开源工具和软件|科学运用Git和SVN也是DevOps的重要环节

    听说你的代码还在扑街?程序员小伙科普大厂常用代码管理开源工具和软件_科学运用Git和SVN也是DevOps的重要环节

Global site tag (gtag.js) - Google Analytics