EXC _ ??? (11)(代码= 0,子代码= 0x0

时间:2012-08-16 13:46:40

标签: cocos2d-iphone

我是新手和iphone app dev。 有时候我会看到这个错误&应用程序崩溃在模拟器上运行我的应用程序 xcode 4.4.1,Mountain Lion,iOS 5.1使用。

我猜这是运行时间相关的错误,因为它是在几秒钟(超过30秒)运行应用程序之后发生的。 我该如何检测并修复此问题?

感谢您的关注。

hm ..我无法上传我的捕获图像

线程1

0 0x0eae45e6

7 glDrawElements

8 - [CCTextureAtlas drawNumberOfQuads ..

9 - [CCTextureAtlas drawQuads]

10 - [CCSpriteBatchNode draw]

11 - [CCTMXLayer draw]

12 - [CCSpriteBatchNode访问]

13 - [CCNode访问]

14 - [CCNode访问]

15 - [CCNode访问]

16 - [CCDirectorIOS drawScene]

17 - [CCDirectorDisplayLink mainLoop:]

18 CA :: Display :: DisplayLink :: dispatch(...

27 UIApplicationMain

28主

29开始

编辑器窗口错误

0xeae45e6:movaps%xmm4,-2472(%ebp)<<<<<<

  

线程1:EXC _ ???(11)(代码= 0,子代码= 0x0)

0xeae45ed:movaps 64(%edi),%xmm4

0xeae45f1:movaps%xmm4,%xmm5

0xeae45f4:mulps%xmm1,%xmm5

0xeae45f7:addps 64(%eax),%xmm5

0xeae45fb:movaps%xmm5,-2456(%ebp)

0xeae4602:movaps%xmm5,%xmm6

4 个答案:

答案 0 :(得分:2)

我得到了这个确切的EXC _ ??? (11)错误非常一致。

在我的情况下,它是多线程编码错误 - 在一个线程上访问的类成员之一也被另一个线程修改(init ... release ...)。这意味着代码正在访问已经发布或完全重新创建的实例。

因此,在适用的情况下添加@synchronized可以修复错误。

答案 1 :(得分:1)

转到 CCDirector CCDirectoriOS ,无论您使用哪个......只需添加

@implementation CCDirectorDisplayLink


-(void) mainLoop:(id)sender
{
   if(displayLink_)//Crash fix
      [self drawScene];
}

应该修复崩溃..

答案 2 :(得分:0)

此错误是由于通过xcode以外的其他方式安装应用程序然后尝试使用xcode运行而造成的。

答案 3 :(得分:0)

忘记禁用不属于当前着色器的顶点属性时,强烈怀疑会引发此异常。

尝试运行此功能:

  // debug
  static void PrintAllActiveAttributes()
  {
    int maxAttribs ;
    glGetIntegerv( GL_MAX_VERTEX_ATTRIBS, &maxAttribs ) ;
    for( int i = 0 ; i < maxAttribs ; i++ )
    {
      int enabled ;
      glGetVertexAttribiv( i, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &enabled ) ;
      if( enabled )  printf( "INDEX %d ENABLED\n", i ) ;
    }
  }

如果您没有禁用之前绑定的着色器使用的某些属性(通过调用glDisableVertexAttribArray),那么这些属性仍将处于活动状态,即使当前绑定的顶点缓冲区不使用它。我相信这会导致一些内存OOB异常被抛出。