Google Analytics 3.12在iOS上崩溃

时间:2015-06-15 11:17:22

标签: ios objective-c xcode google-analytics

我是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

2 个答案:

答案 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底部的滑块一直移到右边。