不用第三方bug统计该如何骚操作

前言

每次线上都会有些崩溃记录在友盟,但是这些崩溃日志并不好查找崩溃的原因,我就在想有没有好一点的方法.

错误的异想天开的做法

当时想着是是根据OC语言的消息转发原理,将那三个消息转发的方法利用运行时进行注入自己的代码.简单的做法就是将NSObject的分类利用runtime进行方法交换.

不用第三方bug统计该如何骚操作_第1张图片

问题所在

这个方法经过试验,比如测试越界等等确实能走到自己写的方法里,但是正常的消息转发也会被记录,这并不是一件好事!

正确而简单的做法

查阅了些文章,发现iOS是提供了这样的函数回调的,写起来很简单,但是发现和第三方缺陷收集平台收集的信息差不多.具体做法如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        NSSetUncaughtExceptionHandler(&my_uncaught_exception_handler);
        return YES;
    }

    static void my_uncaught_exception_handler (NSException *exception) {
        //这里可以取到 NSException 信息
        NSLog(@"***********************************************");
        NSLog(@"%@",exception);
        NSLog(@"%@",exception.callStackReturnAddresses);
        NSLog(@"%@",exception.callStackSymbols);
        NSLog(@"***********************************************");
    }

AppDelegate里注册自己的函数,在这里你可以本机记录崩溃,看自己的需求了

你可能感兴趣的:(不用第三方bug统计该如何骚操作)