Не удается символизировать журналы сбоев

Я испытываю сбой в своем приложении:

Thread 0 name:
Thread 0 Crashed:
0   LogoQuizAC                      0x0000000104705218 __hidden#563_ + 0 (__hidden#957_:0)
1   LogoQuizAC                      0x0000000104705218 _hidden#18_ + 592 (__hidden#957_:135)
2   LogoQuizAC                      0x000000010470503c __hidden#564_ + 48 (__hidden#456_:0)
3   LogoQuizAC                      0x000000010470503c _hidden#18_ + 116 (__hidden#957_:135)
4   LogoQuizAC                      0x00000001046fcd6c _hidden#17_ + 504 (__hidden#454_:96)
5   LogoQuizAC                      0x00000001046fcea0 _hidden#20_ + 36 (__hidden#456_:0)
6   Foundation                      0x0000000182770b20 __NSFireTimer + 68 (NSTimer.m:270)
7   CoreFoundation                  0x0000000181355fa0 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 32 (CFRunLoop.c:1807)
8   CoreFoundation                  0x0000000181355ba0 __CFRunLoopDoTimer + 1064 (CFRunLoop.c:2415)
9   CoreFoundation                  0x0000000181354ffc __CFRunLoopDoTimers + 328 (CFRunLoop.c:2575)
10  CoreFoundation                  0x000000018134eee4 __CFRunLoopRun + 1936 (CFRunLoop.c:3090)
11  CoreFoundation                  0x000000018134e21c CFRunLoopRunSpecific + 600 (CFRunLoop.c:3242)
12  GraphicsServices                0x0000000198f18784 GSEventRunModal + 164 (GSEvent.c:2259)
13  UIKitCore                       0x0000000183d8eee8 -[UIApplication _run] + 1072 (UIApplication.m:3253)
14  UIKitCore                       0x0000000183d9475c UIApplicationMain + 168 (UIApplication.m:4707)
15  LogoQuizAC                      0x000000010453a404 main + 68 (RLockedCell.swift:21)
16  libdyld.dylib                   0x000000018100e6b0 start + 4

Я пробовал почти все, но может символизировать сбой.

Я попытался использовать symbolicatecrash, а затем следующие сообщения:

(_hidden#919_:0) внутри файла символов сбоя

Почему журналы сбоев из Testflight не символизируются в Xcode?

Xcode Crash Organizer не символизирует файлы .xccrashpoint

Как символизировать журнал сбоев с помощью Xcode 8?

как символизировать файл сбоя с помощью xcarchive

Как символизировать Xcode журнала сбоев?

Но без особого успеха.

Что я делаю не так? Как понять, что вызвало сбой?


person Yossi Tsafar    schedule 04.04.2021    source источник
comment
Если эта сборка распространяется в Ad-Hoc, обязательно отключите BitCode.   -  person Arik Segal    schedule 04.04.2021
comment
Он не распространяется в AdHoc, но я также отключил BitCode для последней сборки AppStore. подумал, что это может дать мне подсказку о том, что вызывает сбой.   -  person Yossi Tsafar    schedule 04.04.2021
comment
вылетает во время запуска?   -  person Zain    schedule 04.04.2021
comment
Я думаю, что нет, я понятия не имею, потому что я не могу воспроизвести сбой, я пытался несколько раз, но безуспешно, даже когда с ним сталкивалось более 10% моих пользователей.   -  person Yossi Tsafar    schedule 04.04.2021
comment
Если вы хотите получить более четкое представление о потоке, который приводит к сбою, ваши контроллеры представления сообщают о себе Crashlytics при появлении: появится Crashlytics.crashlytics().log((self)). Таким образом, при просмотре сбоя вы можете щелкнуть вкладку «Журналы» и получить сценарий.   -  person Arik Segal    schedule 05.04.2021


Ответы (1)


Хорошая новость в том, что он дает сбой в вашем коде, а не в коде операционной системы или библиотеки, так что у вас есть хороший шанс отладить его. Ваш код, который дает сбой, работает по таймеру. Иногда эти ошибки видны, потому что при тестировании вы просто тестируете приложение. Но в реальном мире эти таймеры срабатывают, когда вы их не ожидаете.

Например, кто-то запустил ваше приложение, а затем перевел его в фоновый режим при использовании другого приложения, или, например, ему позвонили во время использования приложения. Если вы прикрепите полное содержимое файла .crash, это даст больше информации о причине сбоя.

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

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

person Faisal Memon    schedule 05.04.2021
comment
На самом деле вчера я просто понял, что это может быть таймер (потому что остальная часть журнала сбоев), и я использую таймер только в одном месте в своем приложении. Что я обнаружил, что таймер недействителен, это означает, что он работает вечно (что может привести к сбою, когда приложение вернется в фоновый режим) - person Yossi Tsafar; 06.04.2021
comment
И большое спасибо за хорошо разъясненный ответ. - person Yossi Tsafar; 06.04.2021