我是新手和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
答案 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异常被抛出。