iOS异常捕获

2020-05-14  本文已影响0人  CodingTom

static int s_fatal_signals[] = {

    SIGABRT,

    SIGBUS,

    SIGFPE,

    SIGILL,

    SIGSEGV,

    SIGTRAP,

    SIGTERM,

    SIGKILL,

};

static int s_fatal_signal_num = sizeof(s_fatal_signals) / sizeof(s_fatal_signals[0]);

void UncaughtExceptionHandler(NSException *exception) {

    NSArray *exceptionArray = [exception callStackSymbols]; //得到当前调用栈信息

    NSString *exceptionReason = [exception reason];      //非常重要,就是崩溃的原因

    NSString *exceptionName = [exception name];          //异常类型

}

void SignalHandler(int code)

{

    NSLog(@"signal handler = %d",code);

}

void InitCrashReport()

{

    //系统错误信号捕获

    for (int i = 0; i < s_fatal_signal_num; ++i) {

        signal(s_fatal_signals[i], SignalHandler);

    }

   

    //oc未捕获异常的捕获

    NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);

}

int main(int argc, char * argv[]) {

    @autoreleasepool {

        InitCrashReport();

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

上一篇下一篇

猜你喜欢

热点阅读