我是iOS开发的新手,我的iOS应用程序崩溃了(由供应商开发)。 我学会了阅读日志,这就是我所看到的:
2015-06-15 19:00:51.628 my_app[2540:113596] WARNING: GoogleAnalytics 3.12 void GAIUncaughtExceptionHandler(NSException *) (GAIUncaughtExceptionHandler.m:48): Uncaught exception: *** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array
2015-06-15 19:00:51.636 my_app[2540:113791] INFO: GoogleAnalytics 3.12 -[GAIAnalyticsPropertiesStore propertyRecordForTrackingId:] (GAIAnalyticsPropertiesStore.m:464): Record for tracking id my_tracking_id not found
2015-06-15 19:00:51.640 my_app[2540:113791] VERBOSE: GoogleAnalytics 3.12 -[GAIBatchingDispatcher persist:]
我想知道Google Analytics是否导致崩溃或其他导致崩溃的事件。 API调用很好,应用程序的其他部分工作正常。
修改 Additonal stacktrace
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(
0 CoreFoundation 0x000000010656cc65 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x0000000106205bb7 objc_exception_throw + 45
2 CoreFoundation 0x000000010646317e -[__NSArrayI objectAtIndex:] + 190
3 my_app 0x0000000105396095 -[PromotionDetailViewController tableView:cellForRowAtIndexPath:] + 4213
4 UIKit 0x00000001076faa28 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 508
5 UIKit 0x00000001076d9248 -[UITableView _updateVisibleCellsNow:isRecursive:] + 2853
6 UIKit 0x00000001076ef8a9 -[UITableView layoutSubviews] + 210
7 UIKit 0x0000000107679a2b -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 536
8 QuartzCore 0x00000001073d1ec2 -[CALayer layoutSublayers] + 146
9 QuartzCore 0x00000001073c66d6 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
10 QuartzCore 0x00000001073c6546 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
11 QuartzCore 0x0000000107332886 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242
12 QuartzCore 0x0000000107333a3a _ZN2CA11Transaction6commitEv + 462
13 QuartzCore 0x00000001073340eb _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 89
14 CoreFoundation 0x000000010649fca7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
15 CoreFoundation 0x000000010649fc00 __CFRunLoopDoObservers + 368
16 CoreFoundation 0x0000000106495a33 __CFRunLoopRun + 1123
17 CoreFoundation 0x0000000106495366 CFRunLoopRunSpecific + 470
18 GraphicsServices 0x0000000109f4ca3e GSEventRunModal + 161
19 UIKit 0x00000001075f9900 UIApplicationMain + 1282
20 my_app 0x00000001053de35f main + 111
21 libdyld.dylib 0x0000000108a15145 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
答案 0 :(得分:4)
刚遇到类似问题,并得出结论认为不 Google Analytics导致崩溃。谷歌分析仅仅是为了报告目的而绕过另一次崩溃。
如果您在App Delegate的didFinishLaunchingWithOptions:
(或其他位置)中更改了以下设置,则崩溃将在XCode控制台中显示为正常错误:
GAI *gai = [GAI sharedInstance];
gai.trackUncaughtExceptions = NO;
答案 1 :(得分:1)
调试此问题的一种方法是在objectAtIndex上添加一个符号断点:这可能会导致对objectAtIndex的多次命中:在调试器遇到你之后的那个但是它保证找到它之前。
Xcode 4中的步骤:
View > Navigators > Breakpoint Navigator
click '+' and choose Add Symbolic Breakpoint in the pop-up
type in "objectAtIndex:" in the Symbol text field and click Done
在运行时,如果你不能告诉你正在点击哪个objectAtIndex,请将Debug Navigator底部的滑块一直移到右边。