Как понять отклонение приложения с помощью аварийных журналов? - PullRequest
1 голос
/ 18 апреля 2020

Мое приложение было отклонено по этой причине:

Ваше приложение зависло на iPad, работающем iOS 13.4.1 в сети Wi-Fi, когда мы:

  • Нажали на любой заблокированный content
  • Постучал по значку настроек

Мы приложили подробные журналы cra sh, чтобы помочь устранить эту проблему.

Я протестировал свое приложение. Все отлично работает Как я могу найти ошибку?

Один из трех аварийных журналов:

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x000000010403514c
Termination Signal: Trace/BPT trap: 5
Termination Reason: Namespace SIGNAL, Code 0x5
Terminating Process: exc handler [630]
Triggered by Thread:  0

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   appTime                         0x000000010403514c 0x104014000 + 135500
1   appTime                         0x00000001040351b8 0x104014000 + 135608
2   UIKitCore                       0x00000001acfece08 -[UIViewController _sendViewDidLoadWithAppearanceProxyObjectTaggingEnabled] + 100
3   UIKitCore                       0x00000001acff1898 -[UIViewController loadViewIfRequired] + 936
4   UIKitCore                       0x00000001acff1ca0 -[UIViewController view] + 28
5   UIKitCore                       0x00000001acf1cccc -[_UIFullscreenPresentationController _setPresentedViewController:] + 80
6   UIKitCore                       0x00000001acf10810 -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 188
7   UIKitCore                       0x00000001ad0014bc -[UIViewController _presentViewController:withAnimationController:completion:] + 2616
8   UIKitCore                       0x00000001ad004014 __63-[UIViewController _presentViewController:animated:completion:]_block_invoke + 104
9   UIKitCore                       0x00000001ad00451c -[UIViewController _performCoordinatedPresentOrDismiss:animated:] + 508
10  UIKitCore                       0x00000001ad003f64 -[UIViewController _presentViewController:animated:completion:] + 196
11  UIKitCore                       0x00000001ad0041d0 -[UIViewController presentViewController:animated:completion:] + 164
12  UIKitCore                       0x00000001ad791db0 __67-[UIStoryboardModalSegueTemplate newDefaultPerformHandlerForSegue:]_block_invoke + 248
13  UIKitCore                       0x00000001ad796ac4 -[UIStoryboardSegueTemplate _performWithDestinationViewController:sender:] + 292
14  UIKitCore                       0x00000001ad796970 -[UIStoryboardSegueTemplate _perform:] + 92
15  UIKitCore                       0x00000001acff43b0 -[UIViewController performSegueWithIdentifier:sender:] + 104
16  appTime                         0x0000000104023c44 0x104014000 + 64580
17  appTime                         0x0000000104023338 0x104014000 + 62264
18  UIKitCore                       0x00000001ad80bb4c -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:isCellMultiSelect:] + 1200
19  UIKitCore                       0x00000001ad80b684 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 108
20  UIKitCore                       0x00000001ad80be8c -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 268
21  UIKitCore                       0x00000001ad63b94c _runAfterCACommitDeferredBlocks + 316
22  UIKitCore                       0x00000001ad62b2f4 _cleanUpAfterCAFlushAndRunDeferredBlocks + 232
23  UIKitCore                       0x00000001ad65b744 _afterCACommitHandler + 76
24  CoreFoundation                  0x00000001a9504fb8 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
25  CoreFoundation                  0x00000001a94ffeac __CFRunLoopDoObservers + 420
26  CoreFoundation                  0x00000001a9500328 __CFRunLoopRun + 968
27  CoreFoundation                  0x00000001a94ffc34 CFRunLoopRunSpecific + 424
28  GraphicsServices                0x00000001b364938c GSEventRunModal + 160
29  UIKitCore                       0x00000001ad63222c UIApplicationMain + 1932
30  appTime                         0x000000010401b3ec 0x104014000 + 29676
31  libdyld.dylib                   0x00000001a9387800 start + 4

1 Ответ

0 голосов
/ 18 апреля 2020

Краткий ответ, вы используете журнал сбоев для определения части кода, в которой произошло сбой приложения, и эффективны при написании исправления.

Теперь длинный ответ:

См. Техническое примечание TN2151 - Понимание и анализ приложения Cra sh Отчеты на веб-сайте Apple Developer.

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

и

Cra sh с обратными следами должны быть символизированы , прежде чем их можно будет проанализировать. Обозначение заменяет адреса памяти на понятные человеку имена функций и номера строк. Если вы получите cra sh, выйдет из устройства через окно «Устройства» в Xcode, то через несколько секунд они будут автоматически обозначены для вас. В противном случае вам нужно будет символизировать файл .crash самостоятельно, импортировав его в окно Xcode Devices. См. Символизирующий Cra sh Отчеты для подробностей.

Проще говоря, когда вы создаете свое приложение с Xcode, компилятор также генерирует символы отладки. Как правило, символы отладки следует хранить в файле dSYM, соответствующем сборке, которую вы отправляете на проверку.

Если во время проверки происходит сбой приложения, член группы проверки App Store выбирает и делится журналом cra sh с вы. Теперь журнал cra sh содержит инструкции машины (язык ассемблера), и вы можете использовать Xcode для обозначения отчета cra sh. В этом случае машинные символы преобразуются в имя идентификаторов, которые есть в вашем коде, что поможет вам определить раздел кода, в котором произошла кража sh.

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

...