跟踪记录线上常见崩溃

Posted diyigechengxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟踪记录线上常见崩溃相关的知识,希望对你有一定的参考价值。

@implementation NSArray (LXZArray)

+ (void)load {
    [super load];
    Method fromMethod = class_getInstanceMethod(objc_getClass("__NSArrayI"), @selector(objectAtIndex:));
    Method toMethod = class_getInstanceMethod(objc_getClass("__NSArrayI"), @selector(lxz_objectAtIndex:));
    method_exchangeImplementations(fromMethod, toMethod);
}
 
- (id)lxz_objectAtIndex:(NSUInteger)index {
    if (self.count-1 < index) {
        // 这里做一下异常处理,不然都不知道出错了。
        @try {
            return [self lxz_objectAtIndex:index];
        }
        @catch (NSException *exception) {
            // 在崩溃后会打印崩溃信息,方便我们调试。
            NSLog(@"---------- %s Crash Because Method %s  ---------- ", class_getName(self.class), __func__);
            NSLog(@"%@", [exception callStackSymbols]);
        //  将以上信息通过接口上传或者自定义error上传到bugly。可达到跟踪目的
            return nil;
    }
        @finally {}
    else {
        return [self lxz_objectAtIndex:index];
    }
}
@end

以上是关于跟踪记录线上常见崩溃的主要内容,如果未能解决你的问题,请参考以下文章

性能有瓶颈?3 个实时可视化 Python 工具包来帮你!

在 VS2010 中使用 Nvidia NSight 进行 CUDA 性能分析 - 时间线上的片段

当app出现线上奔溃,该如何办?

UIAlertView 在未记录的方法上崩溃

如何有效的跟踪线上 MySQL 实例表和权限的变更

iOS测试常见崩溃