我最近在我的应用中启用了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中的指令进行符号化。它已经适用于其他堆栈跟踪,我实际上看到我的一些代码导致问题只是没有真正给我任何有关上述跟踪的信息。
答案 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,在服务器上提供最后的异常回溯和符号化。 (我是两者的成员)