iOS统计线上异常崩溃日志之Bugly和友盟统计使用笔记

好记性不如烂笔头,之前一直使用的友盟来统计APP线上崩溃日志,今天研究了腾讯下的Bugly,发现比友盟更简单(单纯的收集崩溃日志),之所以这么说,个人觉得有两点:1、继承简单;2、定位到具体代码简单(可能是因为友盟涉及到的种类多吧,然后就显得复杂了),今天就抽空做一下笔记,分析比较一下两者的差别,以便以后用到就不用去翻官方文档了。

Bugly

先来介绍Bugly的使用
1、先去官方注册账号,添加你的产品拿到App IDApp Key

1.png

2、集成直接pod

pod 'Bugly'

AppDelegate.m

#import <Bugly/Bugly.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

     [Bugly startWithAppId:@"上面拿到的App ID"];
}

好了,到这里就搞定了。你可以在你的项目中写一个数组越界的bug,例如,我在ViewController中添加了一个button,点击的时候就会出现崩溃,

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    btn.backgroundColor = [UIColor redColor];
    [btn addTarget:self action:@selector(btnDidClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}

-(void)btnDidClick
{
    NSArray *arr = @[@"1",@"2",@"3"];
    NSLog(@"---%@",arr[3]);
}

大约不到一分钟我们可以在Bugly的后台看到崩溃信息,(这里在Bugly显示时间很短,可以说是即时的,这个要和友盟快很多。)


2.png
注:刚开始的时候你应该不会显示到具体的代码(红框部分)。

接下来我们就来看怎么定位到具体的代码。官方介绍两种方法配置,这里我采用的是自动配置,涂省事😀

1、先去下载自动配置符号表工具包

2、然后把文件中dSYMUpload.sh中的三个参数修改一下配置,如图

3.png

3、打开你的项目,

4.png

4、将dSYMUpload.sh中的内容复制到下图中对应的位置里面

image.png

注意,如果你不想要的都设置为0:

UPLOAD_DSYM_ONLY=1
#
# # 脚本默认配置的版本格式为CFBundleShortVersionString(CFBundleVersion),  如果你修改默认的版本格式, 请设置此变量, 如果不想修改, 请忽略此设置
# CUSTOMIZED_APP_VERSION=""
#
# # Debug模式编译是否上传,1=上传 0=不上传,默认不上传
UPLOAD_DEBUG_SYMBOLS=1
#
# # 模拟器编译是否上传,1=上传 0=不上传,默认不上传
UPLOAD_SIMULATOR_SYMBOLS=1
#
# #只有Archive操作时上传, 1=支持Archive上传 0=所有Release模式编译都上传
UPLOAD_ARCHIVE_ONLY=1

然后运行Xcode,再去Bugly的后台看到的崩溃信息就会和之前的不一样了,这次能定位到具体的行代码


image.png

友盟

同样的步骤就不重复了
官网注册账号 --> 登录 --> 添加项目 --> 我的产品 --> 点它

image.png

--> 再点它
image.png

--> 你就能看到你的项目了(说实话,我真是找了半天,不知道在哪找自己的项目,跟个迷宫一样,转晕了,在首页就不能来个搜索吗?原谅我的傻白甜😂)
image.png

点击管理就能看到你的App key了
image.png

接下来就是在项目中用了,同样是pod

pod 'UMCCommon'
pod 'UMCAnalytics'

然后在AppDelegate里面,两句代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    /** 初始化友盟所有组件产品
     @param appKey 开发者在友盟官网申请的AppKey.
     @param channel 渠道标识,可设置nil表示"App Store".
     */
    [UMConfigure initWithAppkey:UmAppKey channel:@""];
    
    
    /** 设置 统计场景类型,默认为普通应用统计:E_UM_NORMAL
     @param 游戏统计设置为:E_UM_GAME.Dplus统计设置为:E_UM_DPLUS
     */
    [MobClick setScenarioType:E_UM_NORMAL];
    
    /** 开启CrashReport收集, 默认YES(开启状态).
    @param value 设置为NO,可关闭友盟CrashReport收集功能.
    @return void.
    */
//    [MobClick setCrashReportEnabled:NO];   // 关闭Crash收集
    
    return YES;
}

然后同样的,写一个数组越界的方法,运行,返回友盟控制台,好了,这时候问题来了,这时候你就会发现,友盟迟迟没有返回来崩溃日志,这就是前面提到的,和Bugly不同的,友盟的反射弧超级长,,反正我是第二天才看到了头一天的崩溃日志,不像Bugly那样,最多几分钟就能看到了。这个差评😀
看看昨天的崩溃日志

image.png

接下来就是如果定位到具体的代码了

两步:1、下载错误分析工具解压zip得到umcrashtool文件
2、下载错误列表中的.csv文件

image.png

image.png

然后去报表中心下载
image.png

最后将将umcrashtool与已下载的xxx.csv文件放入同一目录下
image.png

打开终端,1、cd到当前目录下 --> 回车
2、依次输入./umcrashtool+空格 +.csv文件路径(注意:./umcrashtool 与.csv文件路径之间要有空格,如下图) --> 回车
image.png

估计你会看到下图的警告⚠️
image.png

红框内标识你的dsym文件并不是以D56B3C...命名的,那么这个dsym是在哪里找到的,我们在打包的时候,会生成一个Archive文件,Show in Finder,显示包内容找到UM_demo.app.dsym文件,将名字改成上面终端里面给你的那个D56B3C55-B566-312E-A5F0-0DBF473C6175.app.dsym,然后重新执行上面的命令,你就会看到错误信息能具体定位到哪一行了,注:友盟关于数组越界这种bug并不能准确分析出是哪一行代码出现问题😁

这是官方给的错误分析介绍,想要了解的童鞋敬请移步😀

对比两者:

1、时间:Bugly可以堪称即时性,友盟...反射弧超级长;
2、定位准确度:Bugly优于友盟;
3、操作难易度:Bugly可以进行自动配置符号表,友盟只能进行手动操作(反正我觉得没有Bugly用起来简单);
4、友盟每天只能统计1000个错误,第二天会重置次数,而Bugly并没有限制。

更新:

昨天特意去网上搜了一下,针对友盟的崩溃日志分析(因为我觉得上面的方法很麻烦),无意中发现了一个大神写的dSYMTools,不得不说......我还是很喜欢站在巨人的肩膀上摘苹果这种感觉滴😁😁😁😁😁😁。这里贴上原著,也对作者的分享表示感谢 ---> dSYMTools,具体使用方法里面也写得很清楚,在这里就不赘述了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349