Authored by shangjf

修改signal crash重复上报问题 review by 枪兵

... ... @@ -24,7 +24,7 @@ void sighandler(int signal)
names[SIGPIPE] = "SIGPIPE";
names[SIGSEGV] = "SIGSEGV";
YHCrashReporter *crash = [YHCrashReporter sharedInstance];
YHCrashReporter *crash = [[YHCrashReporter alloc] init];
NSArray *arr = [crash callstackAsArray];
NSDictionary *userInfo = @{
... ... @@ -37,7 +37,7 @@ void sighandler(int signal)
void uncaughtCrashExceptionHandler(NSException *exception)
{
YHCrashReporter *crash = [YHCrashReporter sharedInstance];
YHCrashReporter *crash = [[YHCrashReporter alloc] init];
NSArray *arr = [exception callStackSymbols];
NSDictionary *userInfo = @{
... ... @@ -83,18 +83,6 @@ void uncaughtCrashExceptionHandler(NSException *exception)
return self;
}
- (void)dealloc
{
signal(SIGABRT, SIG_DFL);
signal(SIGBUS, SIG_DFL);
signal(SIGFPE, SIG_DFL);
signal(SIGILL, SIG_DFL);
signal(SIGPIPE, SIG_DFL);
signal(SIGSEGV, SIG_DFL);
NSSetUncaughtExceptionHandler(NULL);
}
#pragma mark - methods
- (NSArray *)callstackAsArray
... ... @@ -121,6 +109,7 @@ void uncaughtCrashExceptionHandler(NSException *exception)
}
[[YH_Analytics sharedInstance] logError:kErrorTypeCrash parameters:@{ JsonKeyErrorST: userInfo}];
[self killApp];
}
- (void)handleNSException:(NSDictionary*)userInfo
... ... @@ -131,6 +120,22 @@ void uncaughtCrashExceptionHandler(NSException *exception)
}
[[YH_Analytics sharedInstance] logError:kErrorTypeCrash parameters:@{ JsonKeyErrorST: userInfo}];
[self killApp];
}
- (void)killApp
{
NSSetUncaughtExceptionHandler(NULL);
signal(SIGABRT, SIG_DFL);
signal(SIGILL, SIG_DFL);
signal(SIGSEGV, SIG_DFL);
signal(SIGFPE, SIG_DFL);
signal(SIGBUS, SIG_DFL);
signal(SIGPIPE, SIG_DFL);
kill(getpid(), SIGKILL);
}
@end
... ...