美文网首页iOS DevelopmentiOS Developer程序员
捉虫记:一种令程序员闻风丧胆的BUG

捉虫记:一种令程序员闻风丧胆的BUG

作者: xu54 | 来源:发表于2017-11-05 16:09 被阅读0次

最令程序员毛骨悚然闻风丧胆的BUG就是那种不可重现的bug。这种bug总是在你调试的时候无影无终,而用户使用的时候却又出现。

有以下两种情况:

1:)bug时而出现,时而消失,飘忽不定。这种bug以一种概率出现,所以当你企图调试代码找出它时,它又消失了。这种情况是最让人崩溃的!

2:)bug只在发行版中出现,调试版中却是正常的,但分析bug必须在调试版中。

以上两种bug几乎可以肯定都是内存照成的,线程同步问题、栈溢出问题都是这两种bug的根源。

昨天我的app: <6F> 上TestFlight内测,发现这样的bug, 自己运行都是正常的 ,但提交到TF后,下载下来用却有bug 

这是绘图工具里一个绘制多边形的场景。

自己开发的时候是这样的:

但发行版本中,用户使用的情况却是这样的:

这个bug只存在发行版中,并且多边形如果为正多边形的情况下,bug也消失。因为bug只存在发行版本中,几乎没办法代码调试,只能在几十万行代码中靠猜( 当然猜测的依据是历史所有经验的总结和汇总),然后在猜测的地方加log输出, 经过一天一夜的无水无食物无大小便的努力,找到bug

自己写的多边形算法里,是先绘制正多边形,然后再做压缩的矩阵。

问题是用到了trans这个变量的指针,但是trans局部变量的生命周期在if 的大括弧内,也就是说超过if大括弧,trans变量的内存就会被释放,然而,后面的代码中却使用了trans的数据。

那为什么在debug版本中是正常的呢?

因为debug版本的局部变量的内存释放,系统并不会说把这部分内存清为0, 只是把它丢弃掉,以后有可能有其他代码使用它,而release版本中,系统会立刻把这部分内存清为0.

当然修改起来也很简单,就是把tans变量的定义放到if大括弧外面,保持住它的内存不被释放

相关文章

  • 捉虫记:一种令程序员闻风丧胆的BUG

    最令程序员毛骨悚然闻风丧胆的BUG就是那种不可重现的bug。这种bug总是在你调试的时候无影无终,而用户使用的时候...

  • 基于 Spring MVC 的开源项目,方便黑盒测试的测试管理系

    捉虫记(Github地址) @[|Spring|Spring MVC|Mybatis] 捉虫记简介 捉虫记 设计初...

  • 捉虫记

    为了这条毛毛虫,我也是拼了。 一大早边锻炼边跑到路边的草丛里搜寻,翻动树叶,扒拉草叶,一无所获不说,惹得经过的人无...

  • 捉虫🐛记

    2018年10月25日 星期四 从国培回来的第二天中午,我充当了一回“牙医”,...

  • 捉虫记

    不要误会,捉虫的对象不是上图的千叶吊兰,是我家阳台花园的栀子花。 上年年末(17年),在每天惯例看花中留意到刚买回...

  • 捉虫记

    不知何时起,办公桌上会出现些小虫,初起并不在意,直到有一天他们爬上了电脑屏幕,我发现它们的数量有点多。 开始是抱着...

  • 捉虫记

    眼看着孩子们的暑假接近了尾声,这个暑假你和孩子们都干了啥呢?旅游,抱着手机电脑玩游戏,参加夏令营,上各类辅导班,走...

  • 捉虫记

    大自然是丰富多彩的,小虫子也是绚丽的一个分子,不管喜欢还是不喜欢,各种各样的虫子无处不在。 都市的现代居所密闭的门...

  • 捉虫记

    捉虫记 你小时候捉过虫吗?男孩子一定捉过。但是女孩子捉过虫子的不一定多吧。都说女孩子胆子小,怕虫子,在我眼里虫子没...

  • 捉虫记

    晚饭过后,热浪滚滚袭来,身体里的水份被刚刚晚饭的温度直逼的一个个气势汹汹冲破汗腺,似千军万马,势不可挡。...

网友评论

    本文标题:捉虫记:一种令程序员闻风丧胆的BUG

    本文链接:https://www.haomeiwen.com/subject/xaacmxtx.html