案件回放:
打开游戏,进行上线前的检查,在检测功能的时候,莫名其妙的就崩溃,闪退了。。。。。。立即重新拉起游戏,准备简单的重现之后找研发来修复,发现不能必现了。这个时候去提单也太Low了~~~找到研发问了下,本身的应用是否有做crash异常上报。(目前这一块的Open Source框架比较多,我就不在此累赘复述了)直接查看上一次的crash异常上报信息,结合symbol 信息还原堆栈信息。
案件侦测:
查看还原后的堆栈信息,有一处信息为:
发现最终导致该起“凶案”的罪犯应该是跟Mono本身有关系。而且从_g_log的调用来看,能够给予我们提供线索的应该是get_numerous_trampoline这个函数。
查看Mono源码对应的该函数原型
以上的红色标记信息显示:
get_numerous_trampoline函数中对于异常,错误信息的处理error信息为:Ran out of trampoline

游戏在iOS设备上运行时出现闪退,通过异常上报找到关键堆栈信息,问题指向Mono的get_numerous_trampoline函数。研究Mono源码,发现异常信息与trampolines资源耗尽相关。参考Unity论坛解决方案进行调整,但初次尝试失败,依然闪退。最终在Xcode中对工程进行特定设置,成功解决了因get_numerous_trampoline引发的崩溃问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



