用于App启动崩溃的iOS BugSense堆栈跟踪

时间:2011-12-01 20:24:43

标签: ios crash stack-trace bugsense

我最近在我的应用中启用了BugSense来尝试帮助收集崩溃报告。我看到很多崩溃看起来像是在我的应用程序启动后立即发生的(我无法在我自己的任何设备上复制)。问题是我从BugSense获得的堆栈跟踪使得它看起来像我的App实际上没有做任何导致崩溃的事情。我所看到的只是在跟踪中启动AppDelegate的第一个主要调用,然后是一堆不能很好地符号化的库。

我意识到这可能不足以弄清楚我的崩溃,但也许我可以得到帮助,指出正确的方向。我无法在我自己的设备(以及其他几个人的设备)上进行复制,而BugSense的堆栈跟踪来自于已发布的应用程序。

这是BugSense给我的堆栈跟踪。

libsystem_kernel.dylib              0x3089232c __pthread_kill   70444
libsystem_c.dylib                   0x37d2cfeb abort   290795
libc  abi.dylib                     0x3078ef6b abort_message   28523
libc  abi.dylib                     0x3078c34d _ZL17default_terminatev   17229
libobjc.A.dylib                     0x37d7d2e3 _objc_terminate   37603
libc  abi.dylib                     0x3078c3c5 _ZL19safe_handler_callerPFvvE   17349
libc  abi.dylib                     0x3078c451 _ZdlPv   17489
libc  abi.dylib                     0x3078d825 __cxa_current_exception_type   22565
libobjc.A.dylib                     0x37d7d235 objc_exception_rethrow   37429
CoreFoundation                      0x38187545 CFRunLoopRunSpecific   62789
CoreFoundation                      0x381873a5 CFRunLoopRunInMode   62373
GraphicsServices                    0x37f5efcd GSEventRunModal   16333
UIKit                               0x31d07743 UIApplicationMain   202563
AppNameHD                           0x000039af 0x1000   10671

我正在使用Atos cannot get symbols from dSYM of archived application中的指令进行符号化。它已经适用于其他堆栈跟踪,我实际上看到我的一些代码导致问题只是没有真正给我任何有关上述跟踪的信息。

2 个答案:

答案 0 :(得分:1)

那些符号就好了。它们是什么被破坏了。它可能没有多大帮助,但你可以解开它们:

% c++filt -n _ZdlPv
operator delete(void*)

我不认为你从监视程序计时器中得到异常,但是在启动时崩溃使我对此感到疑惑,如果崩溃日志包含BADF00D。

答案 1 :(得分:1)

该崩溃报告无济于事,您需要最后一个异常回溯来查看代码的哪些部分导致崩溃。正如您在堆栈跟踪中看到的那样,异常被重新抛出,因此发生在另一个runloop中。

较新版本的PLCrashReporter,BugSense崩溃报告也是基于,提供了这一点。 http://code.google.com/p/plcrashreporter/

附注:服务HockeyApp.net在其开源SDK(QuincyKit.net)中使用最新版本的PLCrashReporter,在服务器上提供最后的异常回溯和符号化。 (我是两者的成员)