• cocos2dxjs binding安卓运行时出现signal 11 (SIGSEGV) 程序闪退问题记录


    'Rune's defender'游戏在安卓编译运行时出现: signal 11 (SIGSEGV) at 0xdadadade(cod=1), 程序闪退

    记录下排除过程

    1:sprite释放

    jsb中使用release()会出现各种奇怪的问题,将不使用的sprite都设置null了;

    2:粒子过多

    背景粒子动画,消除粒子动画都去除,问题依然存在;

    3:gl_max_texture_size / gl_max_texture_units

    4:gc_for_alloc / gc_concurrent freed

    5:resizing TextureAtlas capacityfrom;

     createSpriteBatchNode(xxx.plist,num) 后面num参数可设定上限

    6:array beyond

    7:ndk-stack

    8:manifest:  android:hardwareAccelerated="false"; 问题仍然存在

    9:取消怪物出场设置

    *依然出现闪退,但闪退的时间延迟了很多,依然会发热,发热后;

    *放出怪物:取消所有宝石动画,并remove掉炸弹的遮罩进行测试: 依然出现闪退;

    *怪物取消层组合,去掉血条: 依然出现闪退;

    *考虑怪物对象的复用设计

    10:有人说是开辟内存后没有回收导致;

    12:检查全局消除的递归算法,到底运行了几次;

    * 将宝石下落后的全局判断,改为局部判断,对比递归调用次数;

    * 调整后情况好转,但有时仍然闪退,出现越来越卡,然后闪退;

    * 在调试器上加大怪物量测试:模拟器也开始变慢,但没有退出;

    13:main loop循环简化

    14:尝试复杂逻辑gxx绑定;

    15:通过batchNode来优化怪物的渲染

    http://blog.csdn.net/honghaier/article/details/8075354

    http://blog.csdn.net/sdhjob/article/details/8243189

    batchNode与frameCache混用 参考 SpriteTest.js    // SpriteFrameTest

    当渲染批次达到200以上时,在mac模拟器上的fps都只有30帧

    控制渲染批次,可先取消血条

    spriteBatchNode子元素无法添加progress,只能是addchild sprite, 可以是sprite里面还有sprite;

    16:使用Xcode检查内存泄露

    http://blog.csdn.net/totogo2010/article/details/8233565

    17:测试安卓的release模式发布;

    依然出现闪图

    ==============================

    18:闪退问题已解决,见以下网址中的, jsb cc.CallFunc.create问题部分:

    http://www.cnblogs.com/sslin/archive/2013/03/27/2983826.html

  • 相关阅读:
    Python和C#基本算法实现对比
    数据库并发
    NetCore 启动地址配置详解
    SkyWalking Liunx 环境搭建&NetCore接入
    Autofac踩坑经历
    centos 7 安装elasticsearch
    centos 7 java1.8安装
    AppDomin学习与分享
    .Net 程序代码混淆加密工具 ILProtector
    c# 重新认识 Double 浮点型
  • 原文地址:https://www.cnblogs.com/sslin/p/2972152.html
Copyright © 2020-2023  润新知