2014-07-06 69 views
0

我的应用程序中有一个错误,导致它在iOS 7.1上看起来随机崩溃。Xcode中的符号崩溃文件

我进口来自iTunes Connect的相关文件崩溃到Xcode的组织者>库>设备日志,它给了我这样的输出:

Exception Type: EXC_CRASH (SIGSEGV) 
    Exception Codes: 0x0000000000000000, 0x0000000000000000 
    Triggered by Thread: 1 

    Thread 0: 
    0 libGPUSupportMercury.dylib  0x339da8f6 gpus_ReturnNotPermittedKillClient + 10 
    1 libGPUSupportMercury.dylib  0x339db38c gpusSubmitDataBuffers + 100 
    2 IMGSGX543GLDriver    0x2dc8886a SubmitPackets + 118 
    3 GLEngine      0x311959fe gliPresentViewES_Exec + 170 
    4 GLEngine      0x3119590a gliPresentViewES + 130 
    5 OpenGLES      0x311a00ca -[EAGLContext presentRenderbuffer:] + 62 
    6 SpriteKit      0x3161018c -[SKView _renderContent] + 1212 
    7 libdispatch.dylib    0x39c5f81c _dispatch_client_callout + 20 
    8 libdispatch.dylib    0x39c657c6 _dispatch_barrier_sync_f_invoke + 22 
    9 SpriteKit      0x3160fc9e -[SKView renderContent] + 78 
    10 SpriteKit      0x3160d62e __29-[SKView setUpRenderCallback]_block_invoke + 126 
    11 SpriteKit      0x316300e8 -[SKDisplayLink _callbackForNextFrame:] + 252 
    12 QuartzCore      0x313e6dee CA::Display::DisplayLinkItem::dispatch() + 94 
    13 QuartzCore      0x313e6b98 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, 


    Thread 1 Crashed: 
    0 libsystem_kernel.dylib   0x39d27808 kevent64 + 24 
    1 libdispatch.dylib    0x39c68d3a _dispatch_kq_update + 186 
    2 libdispatch.dylib    0x39c6c636 _dispatch_timers_program + 246 
    3 libdispatch.dylib    0x39c69022 _dispatch_mgr_invoke + 142 
    4 libdispatch.dylib    0x39c68dfe _dispatch_mgr_thread$VARIANT$mp + 34 

我不知道如何使用,虽然此。我如何理解这一点?

我的应用程序委托:

// 
// AppDelegate.m 
// Dot Magnet 
// 
// Created by Max Hudson on 4/18/14. 
// Copyright (c) 2014 Max Hudson. All rights reserved. 
// 

#import "AppDelegate.h" 
#import "ViewController.h" 
#import "TestFlight.h" 
#import "Flurry.h" 
#import "MKiCloudSync.h" 

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    //[TestFlight takeOff:@"myapikey"]; 

    [Flurry startSession:@"myapikey"]; 
    [Flurry setCrashReportingEnabled:YES]; 

    [MKiCloudSync start]; 

    return YES; 
} 

-(SKView*)getSKViewSubview{ 
    for (UIView* s in self.window.rootViewController.view.subviews) { 
     if ([s isKindOfClass:[SKView class]]) { 
      return (SKView*)s; 
     } 
    } 
    return nil; 
} 

- (void)applicationWillResignActive:(UIApplication *)application { 
    SKView* view = [self getSKViewSubview]; 

    if (view) { 
     view.paused = YES; 
    } 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    SKView* view = [self getSKViewSubview]; 

    if (view) { 
     view.paused = NO; 
    } 

} 

@end 
+0

您无法确定哪条线。 – Milo

+0

那么有什么有用的,我可以确定? – maxhud

+0

从外观看,它看起来像你试图写入一个你不应该写入的内存空间。 – Milo

回答

0
从它看起来像你试图写入,你不应该写的存储空间看起来

嘛。尝试打开异常断点,并重新创建导致崩溃的事件。但是,因为这是SIGSEGV而不是SIGABRT,可能无法正常工作。其实看线程0。它试图提出一个例外,但不能及时做到。

做了一些研究之后,看起来好像你在做背景,而很可能在你不知情的情况下做了Open GL绘图。确保在移至背景之前停止所有动画。要停止Open GL动画,我觉得你可以尝试调用

glFinish()[[CCDirector sharedDirector] pause]

停止动画,并把这些在你的应用程序代理applicationWillResignActive下,或把这些在自己的类和聆听的变化做辞职活跃:

[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appWillResignActive:) name:UIApplicationWillResignActiveNotification object:nil];

+0

我将如何去'在移动到背景之前停止所有动画'?我实际上不能自己重现这一点 - 它只发生很少,而且几乎与iTunes用户发生。我没有任何办法可以在不能自行重现错误的情况下使用例外 – maxhud

+0

而且您认为后台打开的gl绘图可能只会在一段时间内发生一次,只会在ios 7.1.x上发布,并且只要应用程序打开了?你认为把它放在'applicationwillresignactive'方法有潜力解决它?看起来像一个longshot,不幸的是它很难测试 – maxhud

+0

@maxhud绘图实际上是在应用程序打开之前发生的,一旦打开,引发异常。我会尝试一下,只要你回到活动状态后播放动画,它就值得一试,并且不会伤到任何东西。 – Milo