应用程序崩溃与EXC_SOFTWARE / UNCAUGHT_NS_EXCEPTION

时间:2017-01-31 10:38:49

标签: ios iphone firebase crash crash-reports

我一直在收到Firebase崩溃报告,而且我不确定导致崩溃的原因。我已经无法通过在Xcode中测试错误来复制错误,但崩溃影响了几个不同的用户,因此我知道它不是单个设备特定的崩溃。以下是我所知道的崩溃期间发生的一切。但是,很明显,因为这是通过Firebase的崩溃报告报告的,所以我只有很多信息。

  1. 所有崩溃都来自某种iPad设备,这可能是也可能不是巧合。

  2. 我可以从事件日志中看出,不同用户在不同的屏幕上出现同样的崩溃,所以崩溃可能在AppDelegate类的某个地方,但我不确定只会发生什么样的问题偶尔喜欢这次崩溃。

  3. 崩溃跟踪中唯一一点我认为是我编码的东西是main (AppDelegate.swift:15),但我的AppDelegate文件中的第五行只是AppDelegate类声明,如下所示:

    class AppDelegate: UIResponder, UIApplicationDelegate {

  4. 所以我不确定本节有什么问题。

    如果您认为可能与崩溃有关的任何具体信息,请告诉我,我会尽力提供。

    崩溃追踪:

    Exception name: EXC_SOFTWARE / UNCAUGHT_NS_EXCEPTION
    
    1
    CoreFoundation
    __exceptionPreprocess + 1224112
    2
    libobjc.A.dylib
    objc_exception_throw + 32636
    3
    UIKit
    -[UIPopoverPresentationController presentationTransitionWillBegin] + 9835108
    4
    UIKit
    __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 3628972
    5
    UIKit
    __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 3621060
    6
    UIKit
    _runAfterCACommitDeferredBlocks + 2912452
    7
    UIKit
    _cleanUpAfterCAFlushAndRunDeferredBlocks + 2968188
    8
    UIKit
    _afterCACommitHandler + 26016
    9
    CoreFoundation
    __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 919332
    10
    CoreFoundation
    __CFRunLoopDoObservers + 910536
    11
    CoreFoundation
    __CFRunLoopRun + 911608
    12
    CoreFoundation
    CFRunLoopRunSpecific + 35916
    13
    GraphicsServices
    GSEventRunModal + 49284
    14
    UIKit
    UIApplicationMain + 516228
    15
    Poker
    main (AppDelegate.swift:15)
    16
    libdyld.dylib
    start + 10420
    

1 个答案:

答案 0 :(得分:0)

我有类似的问题,这只是部分答案。

正如有人在评论中所建议的那样,AppDelegate只是接近引起问题的调用链的根。当系统尝试执行_initViewHierarchyForPresentationSuperview时,问题会在该链中一直发生。

当然,您对导致问题的您的代码行感兴趣。这些可能介于报告的UIKit相关的呼叫线之间。我不知道如何直接使用给定的堆栈跟踪来找到导致问题的代码(或我的代码)的根。

然而,我确实知道如何更接近这些界限。我有一个意外的NSException出现在Firebase Crash reporting中,有一个与你的类似的神秘的调用堆栈,并且如上所示的消息:

enter image description here

点击显示的屏幕截图中的上传链接即可: enter image description here

通过跟随instructions from Firebase并进行相当多的研究或研究如何获取与发生问题的应用版本相关的dSYMS符号文件(我正在使用Bitcode,这使事情变得复杂;我最终进入iTunes Connect并在应用程序的活动部分中执行下载dSYMS ),我设法上传了正确的符号文件。 (在本地计算机上执行mdfind "com_apple_xcode_dsym_uuids == *"以查看您是否已获得所需的UUID标识符号文件。)

Firebase随后显示的调用堆栈是: enter image description here

下次问题发生时(我刚从Firebase收到了相应的电子邮件),我看到了这个: enter image description here

我现在唯一的问题是:似乎导致问题的代码相当简单,并且不会在本地测试中引起任何问题。它只显示了一些静态行数的文本视图,我可以手动点击并验证。

我正在尝试将代码包装在do { ... } catch let error { ... }中以查看 - 在未来的应用版本中是否尚未上传 - 我可以通过它捕获内部错误并通过Firebase报告错误消息和其他一些细节错误报告。