2

以下是 CrashReporter 信息:

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

如果我删除该应用程序,然后从头开始下载更新版本,它工作正常......

4

1 回答 1

3

这是由于抛出了一个 Objective-C 异常,被 runloop 捕获并重新抛出,导致回溯丢失。

要在不更改 PLCrashReporter/HockeyApp 的情况下进行调试,您可以通过NSSetUncaughtExceptionHandler()注册您自己的异常处理程序,并通过 (参见 [- NSException callStackReturnAddresses ])记录提供的堆栈跟踪。您需要手动符号化结果。

作为此类bug的更通用的解决方案,您或许可以通过PLCrashReporter trunk获取原始异常回溯,它将异常的原始回溯单独记录在崩溃报告中。

但是,需要对 HockeyApp 客户端进行最低限度的修改以支持记录额外的堆栈跟踪。可以使用 PLCrashReporter 中包含的文本格式化程序作为示例——它将这个额外的堆栈跟踪格式化为一个额外的命名伪线程

于 2011-09-21T19:26:03.997 回答