我常常得到如下的堆栈跟踪:
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构建配置没有任何区别。我该怎么做才能确定异常实际发生的地方?
答案 0 :(得分:0)
要求测试人员检查iOS生成的崩溃报告,该报告将包含您可以进行符号化的最后一个异常回溯,然后查看它发生的位置。
还有其他崩溃报告框架和服务,HockeyApp和QuincyKit(注意:我参与了两者)。这些都使用PLCrashReporter,它也可以跟踪最后的异常回溯,也可以安全地在App Store中使用。