Я использую GTMStackTrace из http://code.google.com/p/google-toolbox-for-mac.
Мне нужен способ протестировать конечного пользователя, чтобы он отправлял мне ошибки при сбое приложения. Я знаю, как отправлять данные на мой сайт, но проблема в том, как отлавливать все необработанные ошибки.
У меня есть этот код:
void exceptionHandler(NSException *exception) {
NSLog(@"%@", [exception reason]);
NSLog(@"%@", [exception userInfo]);
NSLog(@"%@", GTMStackTraceFromException(exception));
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"Error unexpected",@"Info: Can't save record")
message:GTMStackTraceFromException(exception) delegate:nil
cancelButtonTitle:NSLocalizedString(@"Ok",@"Button: Ok") otherButtonTitles:nil];
[alert show];
[alert release];
}
int main(int argc, char *argv[]) {
//For crash report..
NSSetUncaughtExceptionHandler(&exceptionHandler);
//Normal code...
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
Тем не менее, эта вещь не уловила много ошибок, таких как плохая версия, плохой доступ и т.д., и приложение исчезло. У меня есть 2 проблемы, в которых неясно, почему случилось так, что конечные пользователи не имеют ни малейшего понятия, что сказать.
(например, дважды выпустить один и тот же var не поймать)
Итак, как мне получить ВСЕ эти досадные ошибки, чтобы конечный пользователь просто отправил мне отчет о сбое?