iOS 崩溃分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 崩溃分析相关的知识,希望对你有一定的参考价值。
崩溃统计分析,在APP中是非常常见一种优化APP,发现APP的BUG的方式。
1.异常处理
可通过try catch 方式处理,如果发生异常,会走catch ,最终走fianlly。对一些我们不想他崩溃的地方,可以采取这种方式去处理。但要注意的是,通过这种处理,使用的第三方崩溃将捕捉不到异常信息,不会上报。
@try { <#Code that can potentially throw an exception#> } @catch (NSException *exception) { <#Handle an exception thrown in the @try block#> } @finally { <#Code that gets executed whether or not an exception is thrown#> }
2.异常信息打印与拦截
在开发过程中,我们想自己捕捉异常处理,那么,可以通过最简单的一种方式处理,直接在main.m中try catch,在catch中将数据先存在本地,隔一段时间或者APP进入后台时,上报给服务器。
main.m
@try { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } @catch (NSException *exception) { NSLog(@"main------%@", [exception callStackSymbols]); }
但这种方式,个人感觉并不好。实际上,我们可以在AppDelegate.m中处理,在didFinishLaunchingWithOptions中设置异常回调,回调里面,处理相关的异常。
流程是:发生异常-->handleException-->main.h
void handleException(NSException *exception) { NSMutableDictionary *info = [NSMutableDictionary dictionary]; info[@"callStack"] = [exception callStackSymbols]; // 调用栈信息(错误来源于哪个方法) info[@"name"] = [exception name]; // 异常名字 info[@"reason"] = [exception reason]; // 异常描述(报错理由) } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // 将沙盒中的错误信息传递给服务器 // 设置捕捉异常的回调 NSSetUncaughtExceptionHandler(handleException); return YES; }
上面的方法都是对异常的一些分析以处理,实际开发中,我们一般都是使用第三方库记录和分析BUG。
崩溃分析统计
* 1.友盟
* 2.腾讯bugly
* 3.Flurry
* 4.Crashlytics
以上是关于iOS 崩溃分析的主要内容,如果未能解决你的问题,请参考以下文章