Cocos2d-x v4.0 在 iPhone 模拟器中崩溃,带有 Xcode 12、Xcode 12.1、Xcode 12.2

Cocos2d-x v4.0 crashing in iPhone Simulator with Xcode 12, Xcode 12.1, Xcode 12.2

提问人:iPhoneProcessor 提问时间:6/25/2020 最后编辑:iPhoneProcessor 更新时间:11/21/2020 访问量:339

问:

Cocos2d-x v4.0 在所有 iPhone 模拟器中崩溃。在设备中没有崩溃

glslopt_shader* glslShader = glslopt_optimize(ctx, shaderType, source.c_str(), 0);

对于上面的行,每次崩溃。不使用任何着色器。上面的行由精灵创建调用。

auto background = Sprite::create(TEX_MM_BG);

如何修复模拟器的崩溃?

enter image description here

C++ xcode cocos2d-x

评论

0赞 Bernd 11/20/2020
中方能否介绍有关情况?像堆栈跟踪...
0赞 iPhoneProcessor 11/21/2020
@Bernd您在屏幕截图中看到的那样,我在 FWGMainMenu::setupBackground 函数中调用了 background = Sprite::create,它在调用glslopt_optimize崩溃了......您可以在上图中看到的完整函数调用
0赞 iPhoneProcessor 11/21/2020
@Bernd我认为上面的屏幕截图只有 xcode stacktrace,你还有别的地方吗?
0赞 Bernd 11/21/2020
我可以看到某种堆栈跟踪,真的。

答:

1赞 Bernd 11/21/2020 #1

有了这些小信息,我们帮不上什么忙。 但是,如果我尝试相应地解释发布的图像,您会收到“EXC_BAD_ACCESS”异常。

这或多或少意味着您访问释放的内存区域,或者通常尝试取消引用指向无效内存地址的指针。

唯一可能导致此类错误的参数是 。 因此,您应该检查 的代码路径。source.c_str()source

在发布版本中,您不会始终看到“释放后访问”,因为内存不会立即释放到操作系统(这会触发此类错误),它只是标记为“可用”以允许更快的分配。

评论

0赞 iPhoneProcessor 11/21/2020
source.c_str() 不是 null,我只是将它与 iPhone 和模拟器进行了比较。两者都是一样的......在模拟器的glslopt_optimize内崩溃......此 API 的其他输入不为 null。奇怪。。
0赞 iPhoneProcessor 11/21/2020
我强烈猜测在没有 Metal 的旧 mac 中崩溃?我的 2015 mac book pro...不确定它是否支持 Metal。
1赞 Bernd 11/21/2020
啊,对了。这意味着不会在已发布代码的行处触发异常。我只是误解了图像。我假设某处缺少支票。你有机会调试到 ast_declarator_list::hir(exec_list*....
0赞 iPhoneProcessor 11/21/2020
是的,这是其他地方的其他问题。普通的 Cocos2d v4 项目不会因第一个背景图像而崩溃。非常感谢您的回答。