ios – существует ли надежная система отчетов о сбоях для экосистемы iPhone / iPad?

Я знаю в Android, есть довольно надежная встроенная система для уведомления об авариях, которые происходят. Они почти сразу записывают трассировку стека и некоторую другую информацию в документ Google. он работает очень хорошо.

Я начал изучать то же самое для ios, и я не нахожу ничего подобного, что одинаково эффективно. Я прочитал эту статью: Xcode раскадровка: Почему в iPad раскадровки показывают размеры iPhone?

но я не уверен, что это все еще так. Может ли кто-нибудь порекомендовать мне, что использовать для отчетов о сбоях, которые происходят на пользовательских устройствах?

Благодаря!

Я использую Flurry с uncaughtExceptionHandler и GTMStackTrace

Обработчик исключений может выглядеть так:

void uncaughtExceptionHandler(NSException *exception) { @try { NSString *fullBacktrace = GTMSBStackTraceFromException(exception); NSMutableString *backtrace = [NSMutableString stringWithUTF8String:""]; NSArray *backtraceArray = [fullBacktrace componentsSeparatedByString:@"\n"]; for (id entry in backtraceArray) { NSRange testRange = [entry rangeOfString:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]]; if (testRange.length) { [backtrace appendString:entry]; } } NSCharacterSet *whitespaces = [NSCharacterSet whitespaceCharacterSet]; NSPredicate *noEmptyStrings = [NSPredicate predicateWithFormat:@"SELF != ''"]; NSArray *parts = [backtrace componentsSeparatedByCharactersInSet:whitespaces]; NSArray *filteredArray = [parts filteredArrayUsingPredicate:noEmptyStrings]; NSString *strippedBacktrace = [filteredArray componentsJoinedByString:@" "]; [FlurryAnalytics logError:@"uncaughtExceptionHandler" message:[NSString stringWithFormat:@"%@", strippedBacktrace ? strippedBacktrace : @"no matching backtrace"] exception:exception]; } @catch (NSException *exception) { NSLog(@"whoa! could not handle uncaught exception!"); [FlurryAnalytics logError:@"uncaughtExceptionHandler" message:@"no matching backtrace" exception:exception]; } } 

Testflight также имеет хороший журнал сбоев.

То, что вы можете сделать, это создать новый обработчик неперехваченных исключений, а затем зарегистрировать его через NSSetUncaughtExceptionHandler . Таким образом, каждый краш может быть перехвачен непосредственно перед убийством, и вы можете его зарегистрировать / сохранить для загрузки.

(Я лично использовал метод, описанный в этой ссылке: http://cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html )

Установка обработчика ошибок может дать вам только часть отчетов о сбоях, а также подробные сведения о полученных вами отчетах очень ограничены. Вы не получаете трассировки стека из всех потоков, вы не получаете stacktrace исключения, где произошел сбой, и вы не получите номера строк вашего кода, где произошел сбой. Кроме того, вы не получаете отчетов о сбоях, вызванных обработчиками сигналов.

Кроме того, вы не должны запускать какой-либо объектный код C после возникновения сбоя, поскольку он не является безопасным для асинхронного использования. См. Эту статью для получения дополнительной информации: Надежная отчетность о сбоях

Если вы разместите дополнительную информацию о том, что вы можете сделать в качестве ответов на следующие вопросы: Анализ и отчетность о сбоях для iOS и iOS, ловушка аварийного ловушка, информация об отладке. Поймайте и отправьте по электронной почте команде Dev

Interesting Posts
Давайте будем гением компьютера.