2011-09-19 85 views
2

這裏的CrashReporter始終信息:應用通過HockeyApp更新應用程序啓動後崩潰時

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0: 
0 libsystem_kernel.dylib   0x347c2848 __kill + 8 
1 [My Application]    0x0002ec44 fatal_signal_handler (PLCrashSignalHandler.m:98) 
2 libsystem_c.dylib    0x37518522 _sigtramp + 42 
3 [My Application]    0x0003040a uncaught_exception_handler (PLCrashReporter.m:136) 
4 CoreFoundation     0x37663984 __handleUncaughtException + 68 
5 libobjc.A.dylib     0x334082ca _objc_terminate + 122 
6 libc++abi.dylib     0x37f473be safe_handler_caller(void (*)()) + 70 
7 libc++abi.dylib     0x37f4744a std::terminate() + 14 
8 libc++abi.dylib     0x37f4881e __cxa_rethrow + 82 
9 libobjc.A.dylib     0x3340822e objc_exception_rethrow + 6 
10 CoreFoundation     0x375b9556 CFRunLoopRunSpecific + 398 
11 CoreFoundation     0x375b93b6 CFRunLoopRunInMode + 98 
12 UIKit       0x3354dda4 -[UIApplication _run] + 544 
13 UIKit       0x3354b05a UIApplicationMain + 1074 
14 [My Application]    0x00002a9a main (main.m:54) 
15 [My Application]    0x00002a58 0x1000 + 6744 

如果我刪除應用程序,然後從頭它工作正常下載更新的版本...

回答

3

這導致通過拋出一個Objective-C異常,被runloop捕獲並重新拋出,導致回溯失敗。

要調試這一點沒有變化PLCrashReporter/HockeyApp,你可以通過NSSetUncaughtExceptionHandler()註冊自己的異常處理程序,並記錄通過所提供的堆棧跟蹤(見[ - NSException callStackReturnAddresses])。您需要手動對結果進行符號化。

作爲這類錯誤的更一般的解決方案,您可以通過使用PLCrashReporter trunk來獲得原始異常回溯,這將在崩潰報告中單獨記錄異常的原始回溯。

但是,HockeyApp客戶端需要進行最低限度的修改以支持記錄額外的堆棧跟蹤。可以使用PLCrashReporter附帶的文本格式器作爲示例 - 它將格式化此附加堆棧跟蹤as an additional named pseudo-thread