说到crash上传工具,大家肯定会第一时间想到umeng,不错,umeng 是最早推出 crash 上报的工具之一,在刚推出来的时候,特别受到ios开发人员的喜爱。

因为个时候,内存是手动管理的,很容易发生重复是释放内存导致crash,所以umeng的这个工具能够上传已经发布的产品的crash 日志,非常受开发者喜欢。 虽然现在苹果推出了ARC了,解放了iOS开发人员的内存管理工作,但crash还是不可避免的。

umeng推出 crash上报工具有3年多了,主题核心功能基本没做大的改进,最近因为需要实时查看crash 日志,对,是实时,希望app crash 后,能够马上看到错误,方便解决crash问题,发现了bugly工具(这个工具还是腾讯提供的,大公司提供的,不会像小的创业团队,随时会关闭),
 
 以下是对umeng crash 和 bugly 做的一些对比分析

1. crash 日志上报的及时性方面

umeng的太慢了,需要1-2小时才能显示当日的bug,而且有**,每天只能**1000个 crash 日志,bugly 宣称的是实时,经过我的测试,比较及时,基本在1分钟之内就能看到bug 的错误

从错误的及时性来收,bugly 完胜。

2. 错误筛选功能

看下2个页面的bug 赛选对比

umeng: 版本,类型,以及uuid,操作系统等
 
我们来看看 bugly的

版本,类型,机型也可以选择,我最喜欢的功能是用户功能,红色标记的地方,因为你可以设置一个id,比如用户id,uuid等,而不像umeng只有uuid。
 
查找bug 方面,bugly要稍微方便些。

3. 错误的定位

基本上2者都能提供的比较详细,但是仍然有些错误的提示信息不够,相应的堆栈信息显示不全。
 umeng 提供了错误定位工具:详细请查看网址,
http://dev.umeng.com/analytics/reports/errors#2
基本步骤是:
(1)将错误导出csv文件
(2)下载umeng crash分析工具:umcrashtool
(3) 在terminal中运行umcrashtool,提示如下: Usage: umcrashtool [export-file-path],定位后的代码及行数会写入错误分析-symbol.csv文件,与原文件在同一目录下。用工具打开新生成的xxx-symbol.csv文件,便可查看错误发生的源码文件及行数。

 
步骤有点麻烦,来看看bugly是怎么解决的

 在 产品->设置->版本管理 可以上传符号表。
 

我没有上传过符号表,但是看到这个功能,是不是感觉很贴心, 不用自己下载工具,分析。
 
bugly还提供自动上传符号表功能,可以在编译后,自动进行。

具体的功能在bugly高级设置里 http://bugly.qq.com/iosmore
 
 
高级设置里居然还能有错误回调,

在异常发生后进行调用,应用可以设置回调函数,并在回调中保存异常现场信息等信息,异常现场等信息可以通过 getCrashXXX 接口获取

使用示例:

static int exceptioncallbackhandler() { NSLog(@"Crash occur in the app"); [... setAttachLog:@""]; return 1; }

exp_call_back_func=&exception_callback_handler;

看到这个回调,我想到了知乎还是哪,有篇文章是:“如何让app 实现优雅的奔溃” 在app 奔溃的时候,提示下用户:由于不可预知的问题,导致程序奔溃,我们深表歉意。这样用户体验是不是很好!
 
 错误定位来看,还是bugly来的方便。
 
 从总体对比来说,bugly还是不错的,做的相当深入 ,umeng 更定位在统计分析,而crash 上报这块没投入太多的精力。
 
但是bugly也有问题:

(1)产品稳定,靠谱不?

刚推出好像不到2个月吧,看看宣传

手机QQ,qq浏览器 ,各种游戏什么的都接入了,你相信吗?我是不相信的 。
 
  没有被认可的第三方出名的应用采用这个工具,其稳定性,不晓得。
 
   上百万,千万的用户的应用,使用之前最好还是慎重。

最新消息,据说,滴滴打车,唯品会也使用了这个

(2)会导致app增加多大?

应用接入会导致app 有多大的增加,因为基本上所有的应用都使用了umeng ,统计是刚需,里面已经有个crash 上报了,再接入这个bugly 会导致ipa 增加多少,起码要有个数据。
       整个静态库有5.1M,应该增加的app的大小比较小吧,这块没对比过,应该不超过100K吧。
 
 文章来源:http://appask.cn/article/7

相关链接:
umeng http://www.umeng.com/ 接入umeng统计,自动开启crash 
bugly  http://bugly.qq.com/

ios开发交流群:486468672 

腾讯bugly 的crash 上报和umeng的比较的更多相关文章

  1. 【腾讯Bugly干货分享】聊聊苹果的Bug - iOS 10 nano_free Crash

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/hnwj24xqrtOhcjEt_TaQ9w 作者:张 ...

  2. 【腾讯Bugly干货分享】经典随机Crash之二:Android消息机制

    本文作者:鲁可--腾讯SNG专项测试组 测试工程师 背景 承上经典随机Crash之一:线程安全 问题的模型 好几次灰度top1.top2 Crash发生场景:在很平常.频繁的使用页面,打开一个界面,马 ...

  3. 【腾讯Bugly干货分享】经典随机Crash之一:线程安全

    本文作者:鲁可--腾讯SNG专项测试组 测试工程师 背景 Android QQ 在2016下半年连着好几个版本二灰 Crash 率都很高,如果说有新需求,一灰的 Crash 率高,还能找点理由,可是开 ...

  4. 异常上报工具:腾讯Bugly

    1.腾讯出了一个和umeng差不多的异常上报工具Bugly.(传送门:https://bugly.qq.com/docs/) (1)两者比较明显的区别是,Bugly能比较实时上报异常信息,经过测试基本 ...

  5. Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线

    Andoird Crash的跟踪方法,使用腾讯Bugly来捕捉一些疑难杂症,让我们APP稳定上线 我们在开发中常常会注意到一些Crash,这正是很头疼的,而且Crash会带来很多意想不到的状态,很恶心 ...

  6. Ionic2中腾讯Bugly异常捕获以及上报

    Ionic2混合开发,入坑系列:Ionic2中腾讯Bugly异常捕获以及上报 1.Ionic2中处理全局异常,直接继承IonicErrorHandler即可,代码如下 import { IonicEr ...

  7. 【腾讯bugly干货分享】HTML 5 视频直播一站式扫盲

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1277 视频直 ...

  8. 【腾讯Bugly干货分享】Android Linker 与 SO 加壳技术

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57e3a3bc42eb88da6d4be143 作者:王赛 1. 前言 Andr ...

  9. 【腾讯Bugly经验分享】程序员的成长离不开哪些软技能?

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57ce8068d4d44a246f72baf2 Dev Club 是一个交流移动 ...

随机推荐

  1. sublime Text3使用笔记

    转载:http://blog.csdn.net/u012771929/article/details/30030249 目录: 1.setting 安装插件,package control ,Emme ...

  2. JavaScript变量和数据类型

    变量 变量就是一个元素,类似于数学中的概念,用来指定表示一个对象.在JavaScript中,用来指定变量的关键字为var.当声明新变量时,可以使用关键词 "new" 来声明其类型 ...

  3. Apache Kylin 部署之不完全指南

    1. 引言 Apache Kylin(麒麟)是由eBay开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据.底层存储用的是HBase,数据输入与cu ...

  4. Redis Lua脚本原理

    2.6版本之后支持嵌入Lua脚本,客户端使用Lua脚本,直接在服务器端原子的执行多条命令 Lua脚本执行过程 创建并修改Lua环境 1 创建基础Lua环境 2 载入函数库 3 创建全局表格Lua 4 ...

  5. SQL--空值处理

    --为空 SELECT * FROM dbo.Product WHERE Price IS NULL --不为空 SELECT * FROM dbo.Product WHERE Price IS NO ...

  6. Auto Mapper04(MVC中的配置)

    学习如何在MVC项目中配置AutoMapper. 一:首先在MVC项目中引用AutoMapper的DLL文件,接着创建一个接口,这里面我们需要定义两个方法,接口里面的方法只能定义不能实现,也没有什么修 ...

  7. Nancy 学习-身份认证(Forms authentication) 继续跨平台

    开源 示例代码:https://github.com/linezero/NancyDemo 上篇讲解Nancy的Basic Authentication,现在来学习Nancy 的Forms身份认证. ...

  8. linq 实现动态 orderby

    class Pet { public string Name{get;set;} public int Age{get;set;} } void Main() { Pet[] pets = { }, ...

  9. [转] 基于PHP Stream Wrapper开发有趣应用场景

    PHP Stream Wrapper 原文:http://blog.sina.com.cn/s/blog_502c8cc40100k40e.html ,主要是基于SAE环境讲述相应的应用场景,本文经过 ...

  10. ViewPager的刷新、限制预加载、缓存所有

    [框架]: 公共部分:左侧菜单.TitleBar.RadioGroup(3个RadioButton:X.Y.Z) 选择X页面:指示器+ViewPager [要达成的效果]: (1)左侧选择A,进入X页 ...