Reputation: 1975
I'm new to iOS development and I have a crash on my iOS app (developed by vendor). I have learnt to read logs and this is what I see:
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:]
I want to know if Google Analytics is causing the crash or something else that is triggering the crash. The API calls are fine and other parts of the app are working fine.
EDIT 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
Upvotes: 1
Views: 2960
Reputation: 1843
Just ran into a similar issue, and have concluded that it is not Google Analytics causing the crash. Google Analytics is just merely wrapping around another crash for reporting purposes.
If you change the following setting in your App Delegate's didFinishLaunchingWithOptions:
(or other location), the crash will appear as a normal error in the XCode console:
GAI *gai = [GAI sharedInstance];
gai.trackUncaughtExceptions = NO;
Upvotes: 5
Reputation: 5545
One way to debug this issue is to add a Symbolic Breakpoint on objectAtIndex: This may result in many hits to objectAtIndex: before the debugger hits the one you're after but it's guaranteed to find it.
Steps in 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
at runtime, if you can't tell which objectAtIndex: you're hitting, move the slider at the bottom of the Debug Navigator all the way to the right.
Upvotes: 1