2013-12-05 5 views
1

последнее время я загрузил приложение в appstore. Я использую также аналитику Flurry, и там было зафиксировано несколько ошибок.iOS Crash Report - как найти аварийное место

Я попытался прикрепить файл dSYM, чтобы сделать его более удобочитаемым, однако я не уверен, какая часть такого журнала изменится на человекообразный текст.

Другое: здесь я не вижу ни одной строки, указывающей на один из моих файлов классов (реализация).

Так что мои вопросы: - Как я могу получить дополнительную информацию из такого отчета? - Правда ли, что приложение действительно разбилось на пользовательском устройстве? Или, может быть, такая ошибка была невидима для пользователя? - Возможно, приложение не разбилось, но, возможно, пользователь убил его процесс?

Благодаря

Вот отчет аварии

Hardware Model:  iPhone3,3 
Process:   my-app [560] 
Path:   /var/mobile/Applications/3539397F-14A1-4802-A388-1D5070404D98/my id 
Identifier:  /my id 
Version:   1.3 
Code Type:  ARM 
Parent Process: launchd [1] 

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0x70000008 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib      0x34dde5b0 +[Protocol load] + 663 
1 UIKit        0x3471b4a7 0x34699000 + 533671 
2 UIKit        0x346b1abb 0x34699000 + 101051 
3 UIKit        0x347268d7 0x34699000 + 579799 
4 QuartzCore       0x34cdabd9 -[CALayer dealloc] + 1244 
5 libdispatch.dylib     0x3793d4b7 0x3793c000 + 5303 
6 libdispatch.dylib     0x3793edcb -[OS_object release] + 274 
7 CoreFoundation      0x3826af3b +[__NSCFLocale   automaticallyNotifiesObserversForKey:] + 12398 
8 CoreFoundation      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500 
9 CoreFoundation      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128 
10 GraphicsServices     0x3887a2eb 0x38875000 + 21227 
11 UIKit        0x346f0301 0x34699000 + 357121 
12 my-app        0x0012987b -[ASIHTTPRequest setSynchronous:] + 86 

Thread 1: 
0 libsystem_kernel.dylib    0x3568c648 0x3568b000 + 5704 
1 libdispatch.dylib     0x3793fdf8 -[OS_object _dispose] + 579 

Thread 2: 
0 libsystem_kernel.dylib    0x3568beb4 0x3568b000 + 3764 
1 CoreFoundation      0x3826c045 +[__NSCFLocale  automaticallyNotifiesObserversForKey:] + 16760 
2 CoreFoundation      0x3826ada3 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 11990 
3 CoreFoundation      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500 
4 CoreFoundation      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128 
5 WebCore        0x3689ca75 +[WebScriptObject initialize] + 608 
6 libsystem_c.dylib     0x364f5311 0x364e4000 + 70417 

Thread 3: 
0 libsystem_kernel.dylib    0x3568beb4 0x3568b000 + 3764 
1 CoreFoundation      0x3826c045 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 16760 
2 CoreFoundation      0x3826ada3 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 11990 
3 CoreFoundation      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500 
4 CoreFoundation      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128 
5 Foundation       0x3264cbcd +[NSURLConnection _resourceLoadLoop:] + 308 
6 Foundation       0x326d067d -[NSThread description] + 1096 
7 libsystem_c.dylib     0x364f5311 0x364e4000 + 70417 

Thread 4: 
0 libsystem_kernel.dylib    0x3568beb4 0x3568b000 + 3764 
1 CoreFoundation      0x3826c045 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 16760 
2 CoreFoundation      0x3826ada3 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 11990 
3 CoreFoundation      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500 
4 CoreFoundation      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128 
5 my-app       0x001275eb +[ASIHTTPRequest runRequests] + 170 
6 Foundation       0x326d067d -[NSThread description] + 1096 
7 libsystem_c.dylib     0x364f5311 0x364e4000 + 70417 

Thread 5: 
0 libsystem_kernel.dylib    0x3569c594 0x3568b000 + 71060 
1 libsystem_c.dylib     0x364f5311 0x364e4000 + 70417 

Thread 6: 
0 libsystem_kernel.dylib    0x3568beb4 0x3568b000 + 3764 
1 CoreFoundation      0x3826c045 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 16760 
2 CoreFoundation      0x3826ada3 +[__NSCFLocale automaticallyNotifiesObserversForKey:] + 11990 
3 CoreFoundation      0x381ddebd -[__NSDate timeIntervalSinceReferenceDate] + 500 
4 CoreFoundation      0x381ddd49 -[__NSDate timeIntervalSinceReferenceDate] + 128 
5 Foundation       0x3262378f +[NSNotification allocWithZone:] + 334 
6 Foundation       0x326c705d +[NSPropertyListSerialization propertyListWithStream:options:format:error:] + 9132 
7 my-app        0x0013a9ad +[TFURLConnectionOperation _runNetworkThread:] + 140 
8 Foundation       0x326d067d -[NSThread description] + 1096 
9 libsystem_c.dylib     0x364f5311 0x364e4000 + 70417 

Thread 7: 
0 libsystem_kernel.dylib    0x3569cd98 0x3568b000 + 73112 
1 libsystem_c.dylib     0x364eaa16 0x364e4000 + 27158 

Thread 8: 
0 libsystem_kernel.dylib    0x3569cd98 0x3568b000 + 73112 
1 libsystem_c.dylib     0x364eaa16 0x364e4000 + 27158 

Thread 0 crashed with ARM Thread State: 
r0: 0x1fc42250  r1: 0x34b1bee8  r2: 0x2fdf0d60  r3: 0x348a80d5 
r4: 0x70000000  r5: 0x1fc42250  r6: 0x1fc42360  r7: 0x2fdf0e3c 
r8: 0x1ed3c720  r9: 0x0d2c6fba r10: 0x1fc1b290 r11: 0x00000001 
ip: 0x3b9a7d64  sp: 0x2fdf0db4  lr: 0x3471b84b  pc: 0x34dde5b0 
cpsr: 0x20000030 
+0

Добавить контрольную точку исключения для проекта. Прочтите эту ссылку http://blog.manbolo.com/2012/01/23/xcode-tips-1-break-on-exceptions –

+0

Не используйте 'ASIHTTPRequest'! Библиотека устарела и вызывает проблемы. Даже разработчик говорит: «Пожалуйста, обратите внимание, что я больше не работаю над этой библиотекой - вы можете захотеть использовать что-то другое для новых проектов. :) 'См. Http://allseeing-i.com/ASIHTTPRequest/ – Kerni

+0

Привет, вы решили это? У меня очень похожий отчет о сбоях. Спасибо. – shawkinaw

ответ

1

Что касается ваших вопросов:

Вопрос 1: Как я могу получить более подробную информацию от такого отчета?

Ответ:

  1. Сигнал SIGSEGV, который в основном означает ошибку сегментации. Существует несколько возможных причин такого сбоя, например. переопределенный объект, не инициализированный указатель или код, который записывается непосредственно в память.
  2. Сбойная нить показывает вызов dealloc в трассировке стека. Это намек, что авария была вызвана, когда объект был освобожден.
  3. Множество фоновых потоков работает с сетевой операцией с ASIHTTPRequest с аналогичными вызовами в трассировке стека.
  4. Существует много упоминаний о automaticallyNotifiesObserversForKey, в котором намекает, что речь идет о наблюдении за ключевыми значениями. Возможно, наблюдатель зарегистрирован на ключ, и наблюдатель уже освобожден. Это еще более сложно, поскольку уведомления запускаются из фонового потока! Например. работая в фоновом режиме и наблюдая с объектом в основном потоке. Очень легко получить такие сбои в этих сценариях, если вы не убедитесь, что объект в основном потоке живет достаточно долго.
  5. Действительно действительно действительно странно, что несколько фоновых потоков имеют почти одинаковые трассировки стека с одинаковыми адресами памяти для отдельных кадров стека.

Предположение: Если вы не можете воспроизвести эту проблему, вы не могли бы найти причину. Я подозреваю, что он каким-то образом связан с ASIHTTPRequest и с его внутренней обработкой ключевого значения или его использованием. Поэтому я бы заменил эту библиотеку, например.с AFNetworking или используя простой сетевой стек, предоставляемый iOS. Кроме того, если вы используете кодирование с ключом, проверьте код безопасности многопоточности.

Вопрос 2: Действительно ли это, что приложение действительно разбилось на пользовательском устройстве?

Да, вы получаете эти отчеты только о реальных сбоях приложений.

Вопрос 3: Возможно, эта ошибка была невидима для пользователя?

Нет, SIGSEGV - настоящий крах вашего приложения. Invisible будет, если вы поймаете исключение в своем коде и все еще создаете отчет и отправляете его. Но насколько я знаю, Flurry не предоставляет эту функцию, вы, очевидно, не реализовали ее, и эта авария также не вызвана исключением. Так что это невозможно.

Вопрос 4: Возможно ли, что приложение не сработало, но, возможно, пользователь убил его процесс?

Если приложения будут убиты, вы не получите отчет о сбоях от Flurry. Убийства запускаются iOS, а библиотеки отчетов о сбое в работе (что означает каждую службу отчетов о сбоях сторонних компаний) никогда не смогут создать отчет для них.

Замечание: Исключение точки останова (как и другие рекомендации) не помогают в этом типе аварии, так как это не сбой, потому что произошло исключение.

+0

Спасибо за ваш ответ, нет, у меня есть много мест для проверки. В моем приложении у меня есть один, скажем, «главный» наблюдатель - это подкласс TabBarController, но он не всегда видимый (например, когда я отображаю контроллер отображения по модулю). Общая цель моего подкласса TabBarController заключается в предоставлении различных потоков при получении некоторого уведомления, например, отображение некоторого экрана на вкладке 4 и т. Д. На данный момент я подозреваю, что, возможно, этот контроллер освобожден, но все еще зарегистрирован как наблюдатель – MP23

+0

Я также переключу к AFNetworking как можно скорее – MP23

0

можно спросить прямо на волнении - [email protected]? Надеюсь, они могут помочь вам в этом.

взгляните на свои места там, где вы делаете интернет-запросы - я думаю, что это что-то в этом месте.

Для лучшего тестирования, я думаю, вам нужно найти версию iPhone3.3 (так как я знаю, что это verizon iphone 4) и попытаться отладить ваше приложение прямо на этом устройстве.