【问题标题】:Is it possible to catch 3rd party iOS library exception?是否可以捕获 3rd 方 iOS 库异常?
【发布时间】:2016-11-22 14:31:35
【问题描述】:

我的 Objective-C 应用程序正在使用第 3 方 VoIP SDK。我发现如果让应用程序在一夜之间运行就会崩溃。仅当我启用 SDK 时才会发生崩溃,因此我强烈怀疑它会导致崩溃。

该库是一个静态库(.a 扩展名)。我尝试使用 try-catch 块和 NSSetUncaughtExceptionHandler 捕获异常,但没有成功。我怀疑这些方法只适用于 Objective-C 异常,而 SDK 是用原生 C 编写的?

是否可以捕获第 3 方原生 C 异常?我对任何类型的黑客都很好,因为这不会进入生产代码。只是试图找出问题的根源。

编辑: 这是崩溃日志:

    Hardware Model:      iPad5,1
    Version:             0.14 (6.0)
    Beta:                YES
    Code Type:           ARM-64 (Native)
    Role:                Foreground
    Parent Process:      launchd [1]


    Date/Time:           2016-11-22 08:24:59.7336 -0500
    Launch Time:         2016-11-21 13:45:09.9956 -0500
    OS Version:          iPhone OS 10.1.1 (14B100)
    Report Version:      104

    Exception Type:  EXC_CRASH (SIGABRT)
    Exception Codes: 0x0000000000000000, 0x0000000000000000
    Exception Note:  EXC_CORPSE_NOTIFY
    Triggered by Thread:  0

    Application Specific Information:
    abort() called

    Filtered syslog:
    None found

    Last Exception Backtrace:
    (0x18953e1c0 0x187f7855c 0x18953e108 0x18f89359c 0x18f6f4444 0x18f4c653c
 0x18f391d48 0x18f391c78 0x18f44bb10 0x18f44aec0 0x18f44a90c 0x18f44a4c0
 0x18f44a424 0x18f38f220 0x18c84f188 0x18c843e64 0x18c843d24 0x18c7c07ec 
0x18c7e7c58 0x18c7e8678 0x1894eb7dc 0x1894e940c 0x1894e989c 0x189418048 
0x18ae9e198 0x18f3fd2fc 0x18f3f8034 0x10002304c 0x1883fc5b8)

    Thread 0 name:  Dispatch queue: com.apple.main-thread
    Thread 0 Crashed:
    0   libsystem_kernel.dylib          0x000000018850e014 0x1884ef000 + 126996
    1   libsystem_pthread.dylib         0x00000001885d6450 0x1885d1000 + 21584
    2   libsystem_c.dylib               0x00000001884823e0 0x18841f000 + 406496
    3   libc++abi.dylib                 0x0000000187f4d2d4 0x187f4c000 + 4820
    4   libc++abi.dylib                 0x0000000187f6acc0 0x187f4c000 + 126144
    5   libobjc.A.dylib                 0x0000000187f78844 0x187f70000 + 34884
    6   libc++abi.dylib                 0x0000000187f6766c 0x187f4c000 + 112236
    7   libc++abi.dylib                 0x0000000187f67234 0x187f4c000 + 111156
    8   libobjc.A.dylib                 0x0000000187f7871c 0x187f70000 + 34588
    9   CoreFoundation                  0x00000001894180bc 0x18940f000 + 37052
    10  GraphicsServices                0x000000018ae9e198 0x18ae92000 + 49560
    11  UIKit                           0x000000018f3fd2fc 0x18f382000 + 504572
    12  UIKit                           0x000000018f3f8034 0x18f382000 + 483380
    13  Remote                          0x000000010002304c 0x100008000 + 110668
    14  libdyld.dylib                   0x00000001883fc5b8 0x1883f8000 + 17848

【问题讨论】:

  • 如果您使用崩溃的详细信息更新您的问题会有所帮助。
  • @rmaddy 我添加了崩溃日志。
  • 如果它是一个符号化的崩溃报告会有所帮助。
  • 当时控制台上有任何日志消息吗?许多库会在调用 abort 之前记录日志以帮助您诊断问题。

标签: ios objective-c exception crash


【解决方案1】:

这不是可捕获的异常,而是硬崩溃。而且,具体来说,这是一次有目的的崩溃;主线程上的某些东西决定事情已经变得非常糟糕,以至于它调用了abort()

所以,不,你无法捕捉它,而且鉴于崩溃日志,甚至不清楚崩溃是由 3rd 方库触发的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多