我正在使用OpenGL在Android上创建2D游戏.目前我正在几台设备上测试和调试游戏.我面临的问题是可怕的"信号11"错误.
当我在我的三星Galaxy Nexus上玩时,一切都运行顺畅,我可以玩几个小时没有游戏丢失任何错误.我的Nexus正在运行Android ICS.
现在,当我在其他设备上运行时,我收到此信号11错误.这是抛出错误的设备: - HTC Desire HD(姜饼) - HTC Desire Z(姜饼) - HTC Wildfire(姜饼) - Advent Vega平板电脑(Vegacomb) - 华硕EE Pad Transformer(冰淇淋三明治)
我不能在我的Advent Vega上使用USB调试,但其他3个弹出错误的设备都是可调试的.似乎我需要根据我的设备获取有关信号11错误的更多信息.我能够根据我的Galaxy Nexus和我的Desire HD.
由于错误似乎总是出现在同一时刻(当游戏刚刚完成加载纹理时),我想我只能使用一个有根设备找出问题的原因,然后修复它,并测试另一台设备上的新版本.
首先,我认为它与内存管理有关(不释放我的对象,因此执行大量的GC请求).因此,经过几个小时的分析,优化,测试等,我发现这不是问题所在.然后我认为它与Thread Safety有关(一个线程试图从内存中获取内容,另一个线程刚刚销毁了引用).但这似乎也不是这样.
好的,现在我将我的根Desire HD连接到我的笔记本电脑上,然后打开Eclipse项目,运行DDMS.
现在,当游戏/应用程序崩溃时,logcat会告诉我什么?
04-02 13:24:50.561: D/dalvikvm(3526): GC_CONCURRENT freed 739K, 43% free 4225K/7303K, external 1478K/1939K, paused 2ms+4ms
04-02 13:24:50.661: D/dalvikvm(3526): GC_FOR_MALLOC freed 99K, 43% free 4261K/7431K, external 1466K/1939K, paused 29ms
04-02 13:24:50.701: I/DEBUG(3412): debuggerd: 2012-04-02 13:24:50
04-02 13:24:50.701: I/DEBUG(3412): *** *** *** *** *** *** *** *** *** *** *** *** …
Run Code Online (Sandbox Code Playgroud)