文档章节

一个crash引发对版本管理备注重要性的思考

gdxz110
 gdxz110
发布于 2015/10/19 08:57
字数 765
阅读 114
收藏 0
点赞 0
评论 0

    在某个风和日丽的晚上,查看友盟后台时,发现有个app crash发生率特别高。情况如图所示

    SIGSEGV crash一般是引用对象给回收为空,测试了一番,重现了bug,当app进入后台时,app就会挂在GPUImage 某个方法上,这个问题以前没出现过,然后最近手机又更新到ios9,xcode老提示一些莫名奇妙的错误,所以自然会认为是ios9系统的问题,但是这么必现而且常现的问题一定要解决啊,至少也得try catch,有个友好的展示,而不是直接挂掉。测试了其他机子发现跟ios9没关。。。因为其他系统一样出问题。。。

    不过这样也说明是代码层面的问题,问题定位到更准确的范围了。因为挂在GPUImage上,所以一直设断点追踪GPUImage上的对象,没啥结果。。毕竟大牛写的代码,在论坛上问了人,其他人用GPUImage也没遇到这个问题。

    放下这个问题,去做其他东西冷静下,晚上蹲坑的时候,有条线索闪过脑袋,以前没有这个问题,现在出现了,会不会是某个版本更新加了什么东西导致的呢?

    立马回去查看项目更新列表,还好没个版本更新我都备注了更新的功能跟做出的修改,虽然只是写主要的更新功能,但也能在一定程度定位问题。更新列表如图所示:

    

发现20151003之前的版本是木有这个bug的,但后面的版本都有,也就是这两个版本的更新出了问题代码,通过比较,发现加入了友盟统计的功能。然后去掉友盟统计就没有这个bug了。再去翻看友盟统计的文档,发现一句可疑又坑爹的话:

就是这个自动开启的后台统计功能,导致app 进入后台时挂掉,估计是友盟统计进入后台使用了跟GPUImage使用的某些对象一样,然后友盟使用完就释放了,导致GPUImage引用对象为空,最终app crash。

    一个bug引发的血案到此完结,得到的经验,

    1.开发文档要写全,友盟只写了对一般app没有影响,却不具体说明对具体某些类型会产生什么影响以及结果,这里对友盟提出不指名批评,负分滚粗。

    2.项目更新时的文案备注要尽量写清楚,无论大小功能代码的更新都应该尽量清晰,方便日后快速定位问题。

    3.多方面多维度思考问题,在一个方向转一段时间没有结果,就可以尝试休息下,换个状态跟心情再去思考问题,说不定思路就清晰了。

© 著作权归作者所有

共有 人打赏支持
gdxz110
粉丝 7
博文 67
码字总数 29447
作品 0
广州
程序员
android测试之monkey

本文转载自http://www.testwo.com/blog/6188 感谢本文的作者; 一、Monkey test简介 Android的SDK 里面,Monkey的tools是一个命令行工具,当连接Android设备时,只要在命令行里输入相应命令就...

yangiris ⋅ 2015/08/11 ⋅ 0

游戏开发性能优化经验总结

优化概论 说起游戏的优化,在游戏开发中经常分为这几步: 首先要确定游戏中经常会出现哪些问题 – Profile 然后确定在哪些方向进行性能优化 – Analyze 最后再尽可能将问题逐个解决 – Solv...

拉偶有所依 ⋅ 2015/05/11 ⋅ 0

阿里JAVA开发手册零度的思考理解(二)

简书 匠心零度 转载请注明原创出处,谢谢! 说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识...

匠心零度 ⋅ 2017/11/04 ⋅ 0

阿里JAVA开发手册零度的思考理解(二)

转载请注明原创出处,谢谢! 说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流…… ...

匠心零度 ⋅ 2017/11/04 ⋅ 0

viewDidUnload和dealloc的执行时机

一直对这个没有什么问题,反正就是疯狂的release。但今天发现原来模拟器可以模拟内存不足时的情况,这使我的程序发生了一些错误,同时也让我对这两家伙了解更多。 viewDidUnload 这个只在内存...

Jeans ⋅ 2012/08/24 ⋅ 0

讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(中)- IOS不为人知的Bug

前言: 话说昨晚还是前晚,写了一篇:讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(上) 文章写到最后时,多了很多莫名奇妙的问题!!! 为了解决了这些莫名奇妙的问题,我又战斗了...

路过秋天 ⋅ 01/07 ⋅ 0

ELSE 技术周刊(2017.10.30期)

本期推荐 写在 2017 的前端数据层不完全指北 在前端技术的发展中,各个层面演进出不同的技术方案,如数据类型层面的 TypeScript,Flow,PropTypes,应用架构层面的 MVC,MVP,MVVM,还是应用...

风清洋ELSE ⋅ 2017/10/30 ⋅ 0

iOS 9.1 深坑体验及其破解之道

iOS 9.1 深坑体验及其破解之道 腾讯Bugly特约作者: 李想 众所周知,苹果iOS 9的推新速度已经打破了纪录,9.1刚刚于上周推出后,昨天,9.2 beta1已经出来了。 那么,到底iOS9都有哪些坑?网上...

腾讯Bugly ⋅ 2015/11/26 ⋅ 0

CoreLocation.ConnectionClient CFDictionaryApplyFunction Crash

在我们的程序中,一直有一类和CoreLocation模块相关的crash,在ios7.0之前的版本中,这类crash占比不是非常高,在ios7.0及以后,这种类型的crash比例突然飙升,让我们不得不对这种类型的cra...

技术小甜 ⋅ 2017/11/16 ⋅ 0

IE6 Hotfix MS-042将导致其Crash!

近来Test Team和部分Devs发现,在某些时候使用我们产品中的右键菜单会导致IE 6.0(sp1)直接Crash掉。从不同机器上IE不断Crash的情况来看,这应该可以确定是IE的问题,而不是偶然的机器环境导致...

唐玄奘 ⋅ 2017/12/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 29分钟前 ⋅ 0

Kylin 对维度表的的要求

1.要具有数据一致性,主键值必须是唯一的;Kylin 会进行检查,如果有两行的主键值相同则会报错。 2.维度表越小越好,因为 Kylin 会将维度表加载到内存中供查询;过大的表不适合作为维度表,默...

无精疯 ⋅ 32分钟前 ⋅ 0

58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及...

kim_o ⋅ 36分钟前 ⋅ 0

代码注释中顺序更改 文件读写换行

`package ssh; import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils; import java.io.*; public class DirErgodic ......

林伟琨 ⋅ 44分钟前 ⋅ 0

linux实用操作命令

参考 http://blog.csdn.net/qwe6112071/article/details/50806734 ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 同-a,但不列出"."和"...

简心 ⋅ 59分钟前 ⋅ 0

preg_match处理中文符号 url编码方法

之前想过直接用符号来替换,但失败了,或者用其他方式,但有有些复杂,这个是一个新的思路,亲测可用 <?php$str='637朗逸·超速新风王(300)(白光)'; $str=iconv("UTF-8","GBK",$s...

大灰狼wow ⋅ 今天 ⋅ 0

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。 作者: Tony Baer 原文: Has the time finally come for PostgreSQL?(有删节) 近30年来 PostgreSQL 无疑是您从未听...

RiboseYim ⋅ 今天 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 今天 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 今天 ⋅ 0

云计算的选择悖论如何对待?

人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为...

linux-tao ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部