如何在主要停止时解释堆栈跟踪

时间:2012-01-02 17:06:07

标签: objective-c exception

我常常得到如下的堆栈跟踪:

0 StackAsk 0x0007fc0d +[TFCrashHandler backtrace] + 429
1 StackAsk 0x0007fe4b TFHandleExceptions + 35
2 CoreFoundation 0x33d56987 __handleUncaughtException + 74
3 libobjc.A.dylib 0x3583d2d1 _objc_terminate + 128
4 libc++abi.dylib 0x34a763c5 _ZL19safe_handler_callerPFvvE + 76
5 libc++abi.dylib 0x34a76451 _ZdlPv + 0
6 libc++abi.dylib 0x34a77825 __cxa_current_exception_type + 0
7 libobjc.A.dylib 0x3583d235 objc_exception_rethrow + 12
8 CoreFoundation 0x33cac53d CFRunLoopRunSpecific + 404
9 CoreFoundation 0x33cac39d CFRunLoopRunInMode + 104
10 GraphicsServices 0x34f93439 GSEventRunModal + 136
11 UIKit 0x317a39f1 UIApplicationMain + 1080
12 StackAsk 0x0002c1c1 main (main.m:16)
13 StackAsk 0x0002c150 start + 40

(此日志来自测试人员,使用TestFlightApp.com)

当我在测试时发生这种情况时,调试器会停在main函数上。

给出的例外原因是:

*** -[__NSArrayM objectAtIndex:]: index 17 beyond bounds [0 .. 16]

我无法自己复制崩溃,使用Release或Debug构建配置没有任何区别。我该怎么做才能确定异常实际发生的地方?

1 个答案:

答案 0 :(得分:0)

要求测试人员检查iOS生成的崩溃报告,该报告将包含您可以进行符号化的最后一个异常回溯,然后查看它发生的位置。

还有其他崩溃报告框架和服务,HockeyApp和QuincyKit(注意:我参与了两者)。这些都使用PLCrashReporter,它也可以跟踪最后的异常回溯,也可以安全地在App Store中使用。