cocos2d-x bugly崩溃报错修复
崩溃问题
很多崩溃问题没法准确定位,方法是
1、上传符号表,可以解析到小部分的崩溃信息
2、查看更多报错记录,运气好可能在跟踪数据里找到crash_attach.log,extraMessage.txt。运气再好点可能定位到机型崩溃位置
崩溃原因归纳
1、内存不足
发生原因:
- 1、启动的时候经常会出现小于200M;
- 2、在运行过程中内存飙高超出手机支持范围
解决思路:
- 对于启动崩溃目前没法解决;对于运行崩溃,清理掉占用较大而没有用到的内存
具体方法:
- 1、对于游戏里某些尺寸较大(长或宽超过256)、颜色渐变不大的图片进行色深减半处理
- 2、美术图片设计尽量减少空白区域,可以拆成多张的方式;界面图片尽量减少重叠,可以进行图片合并
- 3、我们游戏在战斗里内存较大,可以在进战斗前清理主界面的内存,退回来的时候再重新加载,但此时不要一次性加载主界面,很可能会崩溃,因为同一帧加载图片的内存是翻倍的,可以考虑异步加载或者通过加载界面的方式先清理掉战斗内存,再加载主界面。
- 4、除了图片也有可能是解析数据的时候,数据量源太大导致的
2、野指针
发生原因:
- 代码问题,节点数据已经析构掉了,指针却还没有free
解决思路:
- 节点数据清理之后一定要加上指针的的处理
具体方法:
- 1、在lua层经常会调用removeAllChildren(),clear(),removeFromParent()等方法,指针一定要对p进行 p = nil, p = {}
3、贴图不存在
发生原因:
- 用不存在的贴图去创建对象
解决思路:
- 有可能是真的没有配置图片路径,或者没有此图片,有可能某种原因贴图被释放了
具体方法:
- 查看图片、量表确保图片和路径都对,查看代码,内存确保贴图没有被释放
4、用到没有实际意义的assert()方法
- 如果没有什么意义,直接注释掉
5、其他
- 具体得看崩溃信息了
报错问题
- 这种几乎都能准确定位,多数为判空安全检查,视情况处理