IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> cocos creater 热更重启导致崩溃 -> 正文阅读

[网络协议]cocos creater 热更重启导致崩溃

cocos creater 热更重启导致崩溃

知识点

  1. jsb_websocket_server.cpp 游戏中用到的 socket
  2. inspector_socket_server.cc V8引擎中 用于远程调式native的 socket server

需求背景

  1. 游戏引擎:cocos creater 2.4.3
  2. 游戏热更完调用 cc.game.restart() 导致崩溃
  3. 游戏一发热更新 线上崩溃率指标直线上升

崩溃现场

偶然得到一个可以必现的机型

崩溃堆栈如下:

请添加图片描述

崩溃分析

  1. 根据崩溃堆栈可以看到 是调用jsb_websocket_server

  2. 断点结果可以看到崩溃的入口 是回调里的方法 如下图

  3. 请添加图片描述

  4. 所以 推测 cc.game.restart() 以后, websocket 没释放干净。 导致 重启以后 野指针收到回调, 造成的崩溃

  5. 由于我们没用到cocos creater的websocket 所以决定去掉websocket

  6. 第一步解决方案: 直接把 jsb_websocket_server 注册的回调函数都注释,进入游戏 没有崩溃

  7. 第二步解决方案:翻看源码得知 是否开启socket 是由宏控制。 如下图

  8. 请添加图片描述

  9. so 我们只需要添加宏定义,把 USE_SOCKET 改成0 就好了 如下图

  10. 请添加图片描述

扩展思考

  1. 我们项目没用到 websocket 所以直接把 websocket 注释掉了。 由于 崩溃是websocket_server, 理论上 如果需要用到websocket的话 把 USE_WEBSOCKET_SERVER设置成0 也可以 具体为什么崩溃 还没来记得查。 有想法的可以留言交流

  2. 把websocket 去掉以后也可以远程调试native,所以又找了一下远程调试的原理。 代码如下 :

  3. 请添加图片描述

  4. 从上图得知: 远程调试native的功能是用的V8引擎里的 socket_setver 。导致崩溃的是游戏引擎里的websocket

  5. 断点运行回调里也可以看到。 当访问调试链接时 可以进入断点,具体可自行尝试

至此 热更 game restart 导致崩溃的问题及解决方案就结束了

欢迎有问题的同学留言讨论

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:57:20  更:2022-07-17 16:58:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:57:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码