如何理解crashlogs拒绝应用程序



我的应用程序被拒绝,原因如下:

当我们:时,您的应用程序在WiFi上运行iOS 13.4.1的iPad上崩溃

  • 点击任何锁定的内容
  • 点击设置图标

我们已附上详细的崩溃日志以帮助解决此问题。

我测试了我的应用程序。一切都很好。如何查找错误?

三个故障日志之一:

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

简而言之,您可以使用crashlog来识别应用程序崩溃的代码部分,并有效地编写修复程序。

现在答案很长:

请参阅Apple Developer网站上的技术说明TN2151-了解和分析应用程序崩溃报告。

当应用程序崩溃时,会创建崩溃报告并将其存储在设备上。崩溃报告描述了应用程序终止的条件,在大多数情况下包括每个执行线程的完整回溯,通常对调试应用程序中的问题非常有用。您应该查看这些崩溃报告,了解应用程序发生了哪些崩溃,然后尝试修复它们。

在分析带有回溯的崩溃报告之前,需要符号化。符号化将内存地址替换为人类可读的函数名和行号。如果您通过Xcode的"设备"窗口从设备上获得故障日志,那么几秒钟后它们将自动为您进行符号化。否则,您将需要通过将.crash文件导入Xcode Devices窗口来对其进行符号化。有关详细信息,请参阅象征性碰撞报告。

简单地说,当您使用Xcode构建应用程序时,编译器还会生成调试符号。通常,您应该将调试符号存储在dSYM文件中,该文件对应于您提交审查的构建。

如果您的应用在审查期间崩溃,应用商店审查团队成员会获取崩溃日志并与您共享。现在,崩溃日志包含机器(汇编语言(指令,您可以使用Xcode来符号化崩溃报告。这样做可以将机器符号转换为代码中标识的名称,这将帮助您确定发生崩溃的代码部分。

考虑阅读随附的技术说明,了解如何轻松确定应用程序崩溃的代码部分,并通过修复更有效。

最新更新