您的位置:首页 > 移动开发 > IOS开发

Ios平台游戏异常闪退问题之get_numerous_trampoline排查记录

2014-12-10 16:29 423 查看
案件回放:

打开游戏,进行上线前的检查,在检测功能的时候,莫名其妙的就崩溃,闪退了。。。。。。立即重新拉起游戏,准备简单的重现之后找研发来修复,发现不能必现了。这个时候去提单也太Low了~~~找到研发问了下,本身的应用是否有做crash异常上报。(目前这一块的Open Source框架比较多,我就不在此累赘复述了)直接查看上一次的crash异常上报信息,结合symbol 信息还原堆栈信息。

案件侦测:

查看还原后的堆栈信息,有一处信息为:



发现最终导致该起“凶案”的罪犯应该是跟Mono本身有关系。而且从_g_log的调用来看,能够给予我们提供线索的应该是get_numerous_trampoline这个函数。

查看Mono源码对应的该函数原型



以上的红色标记信息显示:

get_numerous_trampoline函数中对于异常,错误信息的处理error信息为:Ran out of trampolines of type

查看到该信息之后,直接可以去搜索对应的解决方案了

于是参考:
http://answers.unity3d.com/questions/64909/ran-out-of-trampolines-of-type-2-ios.html
在Unity上做了修改,本以为一切应该可以回归正常,,,不会出现杨过叫了小龙女回头的是陈XX的一种哀伤和心碎了,,,可是build完成后,发现,,,还是crash,查看堆栈还是,,,,jit,~~~而且还是这里的问题,,,老夫觉得有点愤怒了,,,难道说又陷入了深深的坑里了,,,你存在,bug深深的坑里,,,如何逃离,如何逃离~~~

最终结果和解决方案:

是这里的问题,也是这个原因,但是修改的不对。正确的是:

在Xcode里面(我这里是ios),选中对应的工程,然后

在项目option--iphone build处添加额外的参数-aot "ntrampolines=2048"

这个参数默认值为1024,试着增加这个值直到满足你的应用的需求(Ran out of trampolines of type 0 )
Ran out of trampolines of type 1
如果你使用了过多的泛型嵌套,如List<T>中还有List<T>成员,你可以同上通过添加额外的参数-aot "nrgctx-trampolines=2048" 来解决。
蹦床类型1的默认值为1024.
Ran out of trampolines of type 2
如果你界面操作频繁,你可以通过添加额外的参数-aot "nimt-trampolines=512" 来解决。
这里的默认值为128.


打完收工~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐