当前位置:网站首页>cocos creater 热更重启导致崩溃
cocos creater 热更重启导致崩溃
2022-07-30 17:57:00 【丶党玲儿】
cocos creater 热更重启导致崩溃
知识点
- jsb_websocket_server.cpp 游戏中用到的 socket
- inspector_socket_server.cc V8引擎中 用于远程调式native的 socket server
需求背景
- 游戏引擎:cocos creater 2.4.3
- 游戏热更完调用 cc.game.restart() 导致崩溃
- 游戏一发热更新 线上崩溃率指标直线上升
崩溃现场
偶然得到一个可以必现的机型
崩溃堆栈如下:
崩溃分析
根据崩溃堆栈可以看到 是调用jsb_websocket_server
断点结果可以看到崩溃的入口 是回调里的方法 如下图
所以 推测 cc.game.restart() 以后, websocket 没释放干净。 导致 重启以后 野指针收到回调, 造成的崩溃
由于我们没用到cocos creater的websocket 所以决定去掉websocket
第一步解决方案: 直接把 jsb_websocket_server 注册的回调函数都注释,进入游戏 没有崩溃
第二步解决方案:翻看源码得知 是否开启socket 是由宏控制。 如下图
so 我们只需要添加宏定义,把 USE_SOCKET 改成0 就好了 如下图
扩展思考
我们项目没用到 websocket 所以直接把 websocket 注释掉了。 由于 崩溃是websocket_server, 理论上 如果需要用到websocket的话 把 USE_WEBSOCKET_SERVER设置成0 也可以 具体为什么崩溃 还没来记得查。 有想法的可以留言交流
把websocket 去掉以后也可以远程调试native,所以又找了一下远程调试的原理。 代码如下 :
从上图得知: 远程调试native的功能是用的V8引擎里的 socket_setver 。导致崩溃的是游戏引擎里的websocket
断点运行回调里也可以看到。 当访问调试链接时 可以进入断点,具体可自行尝试
至此 热更 game restart 导致崩溃的问题及解决方案就结束了
欢迎有问题的同学留言讨论
边栏推荐
- LeetCode 952. 按公因数计算最大组件大小
- 图解LeetCode——11. 盛最多水的容器(难度:中等)
- 知识蒸馏3:YOLOV5项目准备
- ESP8266-Arduino programming example-BMP180 air pressure temperature sensor driver
- 17.机器学习系统的设计
- windwons 下GPU环境和pytorch安装
- 2022年杭电多校第2场 1001 Static Query on Tree(树链剖分+哈希表差分
- 毕业1年从事软件测试拿下11.5k,没有给98后丢脸吧...
- LayaBox---TypeScript---类型兼容性
- 【HarmonyOS】【FAQ】鸿蒙问题合集3
猜你喜欢
18.支持向量机(SVM)的介绍
ByteArrayInputStream class source code analysis
weiit新零售小程序如何探索数字化门店的破局之路
测试行业干了5年,从只会点点点到了现在的测试开发,总算是证明了自己
Network Basics (3) 01-Basic Concepts of Networks - Protocols, Host Addresses, Paths and Parameters of URL Addresses & 127.0.0.1 Local Loopback Address & View URL IP Address and Access Ping Space + URL
【HMS core】【ML Kit】机器学习服务常见问题FAQ(二)
Mongo for infrastructure
ByteArrayInputStream 类源码分析
linux 安装mysql8.0 超详细教程(实战多次)
5分钟搞懂MySQL - 行转列
随机推荐
core sound driver详解
5 个开源的 Rust Web 开发框架,你选择哪个?
【牛客编程题】GO语言入门46题
第十六期八股文巴拉巴拉说(MQ篇)
什么是无损检测设备?
BI报表与数据开发
Py程序员的七夕情人节
银行适用:此文能够突破你的运维流程管理问题
C陷阱与缺陷 第7章 可移植性缺陷 7.3 整数的大小
网络基础(二)-Web服务器-简介——WampServer集成服务器软件之Apache+MySQL软件安装流程 & netstat -an之检测计算机的端口是否占用
你好好想想,你真的需要配置中心吗?
分布式消息队列平滑迁移技术实战
Metaverse Web 3.0 和 DeFi大师班
C陷阱与缺陷 第6章 预处理器 6.1 不能忽视宏定义中的空格
Linux-安装MySQL(详细教程)
What is NDT equipment?
今年这情况。。真心推荐专科的工程师升个本!
一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧
ByteArrayInputStream class source code analysis
知识蒸馏4:准备数据集并修改网络配置