如何解释来自 iOS 的这些崩溃报告 [重复]

Posted

技术标签:

【中文标题】如何解释来自 iOS 的这些崩溃报告 [重复]【英文标题】:How do I interpret these crash reports from iOS [duplicate] 【发布时间】:2013-06-07 19:36:06 【问题描述】:

您好,我有一个 ios 应用程序正在审核中,但它刚刚被拒绝...我一直在尝试使用 iOS 6.1.3 刺激我的 ipad,使其崩溃,如苹果所述:

当我们点击操作或选项按钮时,您的应用崩溃了。

但是我失败了,可以从下面的报告中读取崩溃的确切过程吗? 我怀疑他们正在做一些非常疯狂的事情,你能告诉我崩溃是否与网络有关吗?或者他们是否一直在按下某个按钮?我自己找不到足够的信息:

符号化:

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Crashed Thread:  0

Last Exception Backtrace:
0   CoreFoundation                  0x32b0629e __exceptionPreprocess + 158
1   libobjc.A.dylib                 0x3a9aa97a objc_exception_throw + 26
2   CoreFoundation                  0x32b061c0 +[NSException raise:format:] + 100
3   UIKit                           0x34aab56c -[UINib instantiateWithOwner:options:] + 1632
4   UIKit                           0x34aaab96 -[UIViewController _loadViewFromNibNamed:bundle:] + 230
5   UIKit                           0x349a3038 -[UIViewController loadView] + 88
6   UIKit                           0x3492d468 -[UIViewController loadViewIfRequired] + 64
7   CodeFriend                      0x0000fb14 -[ThemesPopOverViewController initWithNibName:bundle:] (ThemesPopOverViewController.m:24)
8   CodeFriend                      0x0000e21a -[AppDelegate settingAct:] (AppDelegate.m:127)
9   UIKit                           0x349f90c0 -[UIApplication sendAction:to:from:forEvent:] + 68
10  UIKit                           0x349f9072 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 26
11  UIKit                           0x349f9050 -[UIControl sendAction:to:forEvent:] + 40
12  UIKit                           0x349f8906 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 498
13  UIKit                           0x349f8dfc -[UIControl touchesEnded:withEvent:] + 484
14  UIKit                           0x349215ec -[UIWindow _sendTouchesForEvent:] + 520
15  UIKit                           0x3490e7fc -[UIApplication sendEvent:] + 376
16  UIKit                           0x3490e116 _UIApplicationHandleEvent + 6150
17  GraphicsServices                0x3660259e _PurpleEventCallback + 586
18  GraphicsServices                0x366021ce PurpleEventCallback + 30
19  CoreFoundation                  0x32adb16e __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 30
20  CoreFoundation                  0x32adb112 __CFRunLoopDoSource1 + 134
21  CoreFoundation                  0x32ad9f94 __CFRunLoopRun + 1380
22  CoreFoundation                  0x32a4ceb8 CFRunLoopRunSpecific + 352
23  CoreFoundation                  0x32a4cd44 0x32a44000 + 36164
24  GraphicsServices                0x366012e6 GSEventRunModal + 70
25  UIKit                           0x349622fc UIApplicationMain + 1116
26  CodeFriend                      0x0000d3b6 main (main.m:16)
27  libdyld.dylib                   0x3ade1b1c start + 0


Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libsystem_kernel.dylib          0x3aea8350 __pthread_kill + 8
1   libsystem_c.dylib               0x3ae1f11e pthread_kill + 54
2   libsystem_c.dylib               0x3ae5b96e abort + 90
3   libc++abi.dylib                 0x3a3f9d4a abort_message + 70
4   libc++abi.dylib                 0x3a3f6ff4 default_terminate() + 20
5   libobjc.A.dylib                 0x3a9aaa74 _objc_terminate() + 144
6   libc++abi.dylib                 0x3a3f7078 safe_handler_caller(void (*)()) + 76
7   libc++abi.dylib                 0x3a3f7110 std::terminate() + 16
8   libc++abi.dylib                 0x3a3f8594 __cxa_rethrow + 84
9   libobjc.A.dylib                 0x3a9aa9cc objc_exception_rethrow + 8
10  CoreFoundation                  0x32a4cf1c CFRunLoopRunSpecific + 452
11  CoreFoundation                  0x32a4cd44 CFRunLoopRunInMode + 100
12  GraphicsServices                0x366012e6 GSEventRunModal + 70
13  UIKit                           0x349622fc UIApplicationMain + 1116
14  CodeFriend                      0x0000d3b6 main (main.m:16)
15  libdyld.dylib                   0x3ade1b1c start + 0

Thread 1:
0   libsystem_kernel.dylib          0x3aea8d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3adf6cf6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3adf6a12 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3adf68a0 start_wqthread + 4

Thread 2 name:  Dispatch queue: com.apple.libdispatch-manager
Thread 2:
0   libsystem_kernel.dylib          0x3ae98648 kevent64 + 24
1   libdispatch.dylib               0x3adc8974 _dispatch_mgr_invoke + 792
2   libdispatch.dylib               0x3adc8654 _dispatch_mgr_thread$VARIANT$mp + 32

Thread 3:
0   libsystem_kernel.dylib          0x3aea8d98 __workq_kernreturn + 8
1   libsystem_c.dylib               0x3adf6cf6 _pthread_workq_return + 14
2   libsystem_c.dylib               0x3adf6a12 _pthread_wqthread + 362
3   libsystem_c.dylib               0x3adf68a0 start_wqthread + 4

Thread 4 name:  WebThread
Thread 4:
0   libsystem_kernel.dylib          0x3ae97eb4 mach_msg_trap + 20
1   libsystem_kernel.dylib          0x3ae98048 mach_msg + 36
2   CoreFoundation                  0x32adb040 __CFRunLoopServiceMachPort + 124
3   CoreFoundation                  0x32ad9d9e __CFRunLoopRun + 878
4   CoreFoundation                  0x32a4ceb8 CFRunLoopRunSpecific + 352
5   CoreFoundation                  0x32a4cd44 CFRunLoopRunInMode + 100
6   WebCore                         0x38a3c500 RunWebThread(void*) + 440
7   libsystem_c.dylib               0x3ae0130e _pthread_start + 306
8   libsystem_c.dylib               0x3ae011d4 thread_start + 4

Thread 0 crashed with ARM Thread State (32-bit):
    r0: 0x00000000    r1: 0x00000000      r2: 0x00000000      r3: 0x3c99e534
    r4: 0x00000006    r5: 0x3c99eb88      r6: 0x1dda5554      r7: 0x2fdf7a14
    r8: 0x1dda5530    r9: 0x00000300     r10: 0x00000000     r11: 0x00000000
    ip: 0x00000148    sp: 0x2fdf7a08      lr: 0x3ae1f123      pc: 0x3aea8350
  cpsr: 0x00000010

继续往下看:用于初始化 ThemesPopOverViewController 的代码是:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) 


            self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(20, 0, self.view.frame.size.width - 40, 350)];
            [self.tableView setBackgroundColor:[UIColor clearColor]];
            [self.tableView setDelegate:self];
            [self.tableView setDataSource:self];
            themes = [[NSArray alloc] initWithObjects:kRegexHighlightViewThemeArray];
            [self.view addSubview:self.tableView];
            int item = [themes indexOfObject:theDelegate.codeView.currentTheme];
            NSIndexPath *indexPath = [NSIndexPath indexPathForItem:item inSection:0];
            [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];

        

        return self;
    

    - (void)viewDidLoad
    
        [super viewDidLoad];

        // Do any additional setup after loading the view from its nib.
    

我实际上似乎即使在从视图层次结构中删除弹出框之后,上面的 init 方法完成的分配也会占用内存,它是 ARC,我是否需要在删除弹出框上方的某个地方将其设置为 nil?所以每次按下弹出框时,内存分配都会增加......

【问题讨论】:

***.com/questions/5439898/… 也许这是重复但不是链接问题。 【参考方案1】:

最相关的信息是:

7   CodeFriend   0x0000fb14 -[ThemesPopOverViewController initWithNibName:bundle:] (ThemesPopOverViewController.m:24)

ThemesPopOverViewController 正在从 nib 文件 (xib) 加载。这意味着您已经创建了一个ThemesPopOverViewController 实例并且您是第一次访问它的view(例如,通过显示它)。

6   UIKit        0x3492d468 -[UIViewController loadViewIfRequired] + 64
5   UIKit        0x349a3038 -[UIViewController loadView] + 88 
4   UIKit        0x34aaab96 -[UIViewController _loadViewFromNibNamed:bundle:] + 230

UIKit 调用的加载视图的方法

3   UIKit        0x34aab56c -[UINib instantiateWithOwner:options:] + 1632

这里是实际加载的视图,并且所有者中的 IBOutlets 已连接。

您无法从堆栈跟踪中了解更多信息。我很确定这不是内存错误,由于以下行,甚至应该有描述性错误消息

2   CoreFoundation    0x32b061c0 +[NSException raise:format:] + 100

这绝对与连接无关。可能是无效的 nib (xib) 文件或无效的 IBOutlets。你确定所有的 IBOutlet 都正确合成了吗?

我还将简要描述堆栈上的先前步骤:

16  UIKit       0x3490e116 _UIApplicationHandleEvent + 6150
15  UIKit       0x3490e7fc -[UIApplication sendEvent:] + 376
14  UIKit       0x349215ec -[UIWindow _sendTouchesForEvent:] + 520

应用程序正在处理点击(触摸事件)。事件被发送到一个窗口 (UIWindow)。

13  UIKit       0x349f8dfc -[UIControl touchesEnded:withEvent:] + 484
12  UIKit       0x349f8906 -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 498
11  UIKit       0x349f9050 -[UIControl sendAction:to:forEvent:] + 40

该事件是一个“修饰”事件(调用touchesEnded),接收者是一个按钮(UIButton 继承自UIControl)。然后按钮生成一个动作,可能是UIControlTouchUpInside 并发送它。

10  UIKit       0x349f9072 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 26
9   UIKit       0x349f90c0 -[UIApplication sendAction:to:from:forEvent:] + 68

应用程序将操作发送给侦听器。

8   CodeFriend  0x0000e21a -[AppDelegate settingAct:] (AppDelegate.m:127)

在您的AppDelegate 中调用-(void)settingAct 的方法是为了响应操作而调用的。从名字我可以推断出“设置”按钮被触摸了。该方法尝试创建一个控制器(弹出框?)并发生崩溃。

【讨论】:

所以 ThemesPopOverViewController 的 xib 完全是空的,它只是带有背景颜色的视图,在 initWithNib 函数中以编程方式添加了一个表格视图 首先,您应该将表创建移动到 viewDidLoad。您也不能认真地在 init 中开始滚动动画。你应该把它放到 viewDidAppear 中。但是,我不认为这是由代码引起的。【参考方案2】:

您需要通过将崩溃报告拖到 Xcode 管理器窗口中来对其进行符号化。如果您有您发送的构建的符号文件(它应该与您的应用存档一起在管理器中),Xcode 将向您显示有关应用崩溃时每个线程正在做什么的更多信息。

【讨论】:

以上是关于如何解释来自 iOS 的这些崩溃报告 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Crashlytics - 发布新版本后,我收到了来自 ios 9.1-9.2 的大量崩溃报告

使用 Sentry 时如何避免来自第三方扩展的不必要的崩溃报告?

需要帮助解释来自 QuincyKit 的崩溃日志

如何在 xCode 中使用来自 Apple 的崩溃报告?

在 iOS 上使用多个崩溃报告器

如何从连接到 Xcode 的设备中理解 ios 崩溃报告?