当前位置: 首页 > news >正文

记一次差点通宵的bug(内网没bug,外网有bug)

bug表现,一个组队副本,队员已准备,断线重连变成未准备,点准备提示找不到队伍,队长点开始提示队员未准备。问题是这个bug私服没问题,内网没问题,外网有问题。。。
怎么办呢,远程上外网调试呢。
1.第一个奇怪的bug,进函数加log,函数中加log,函数末加log。函数进入的log打印了,然后就间隔一行的log没打印。上一行代码执行了,下一行代码没执行。
这种bug之前遇到过,就是函数调用死循环了。但是这次看起来没有死循环,而且肉眼可见的不可能死循环。找公司同事帮忙看了下,原因是bug在外网,要svn提交代码,然后点热更新,然后看增加的log.
问题出在提交的代码忘了点击热更新。。。。提交代码,点击热更,次数实在是太多了,搞忘了。已经头皮发麻,头脑不清晰了。就找这个bug,从下午搞到了凌晨一点多。svn提交了149次。。。。
这个代码莫名其妙不执行,不打印log问题找到了。就是提交上去后忘了点击热更,直接调试了。。代码和本地不一致。。。
2.第二个奇怪的bug.队员断线重连后,点击准备找不到队伍,打印队伍列表长度,发现是0,根本没有队伍。队长点击开始,能找到队伍,队伍列表长度是1。问题是点击准备和点击开始打印的数组是同一个数组。。。
同样问了同事,他叫我打印skynet.self(),打印出来的值确实不一样。说明他们在不同的进程。。。。那么问题定位了,组队这个进程,内网只开了一个,外网开了8个,这是问题的关键。两个玩家掉线前在同一进程,掉线后在不同的进程。为什么就进入到其他进程了,玩家点击准备这个包是在网管转发的,网管转发的时候会根据队伍id发到对应的进程,断线后玩家的队伍id为0,。
解决办法就是玩家的队伍id要存起来,断线后要取出来。

图文详解

第一次提交152842,最后一次提交152991.一共提交了149次。。。

准备的代码

开始的代码

代码在同一个文件。table.size(team_room_set)打印的是同一个表。。

问题出在这里,team_id为零转发到了不同的skynet进程

proxy.send_team(team_id, 'Request', 'Team.'..msg_name, user.userid, msg_body, gate_info)

就这个配置内外网不一样
内网worker_size=1,外网worker_size=8
怎么说呢,这个框架不是我搭建了,外网也不是我布置的。对他们的架构还不熟悉。。。

总结这次bug
总的原因是对框架不熟悉,不知道队伍是多进程的。其次调试奇怪bug应该第一想到代码内网外是否一致,虽然遇到奇怪问题没花时间去研究直接问了同事,也快速解决了,但是自己也要快速定位外码一致性问题,是否提交后忘了更新。
 

http://www.dtcms.com/a/112454.html

相关文章:

  • Uni-app PDF Annotation plugin library online API examples
  • Mysql 行级锁在什么样的情况下会升级为表级锁?
  • Lua函数与表+Lua子文件加载与元表
  • 4.5/Q1,GBD数据库最新文章解读
  • ✅ 2025最新 | YOLO 获取 COCO 指标终极指南 | 从标签转换到 COCOAPI 评估 (训练/验证) 全覆盖【B 站教程详解】
  • NHANES指标推荐:DI-GM
  • ARM 协处理器(Coprocessor)功能及用法详解
  • vue3 字符串里面有变量 反引号(``)来定义模板字符串,并且hello,world来简单说明
  • 修改Jupyter Notebook主目录文件夹
  • WHAT - CSS 伪元素
  • 数字孪生技术之争:UE、Unity还是飞渡DTS数字孪生平台?
  • uniapp实现的简约美观个人中心页面(仿小红书)
  • Qt 事件系统负载测试:深入理解 Qt 事件处理机制
  • Mysql 中的索引
  • 文件或目录损坏且无法读取:数据恢复的实战指南
  • Mysql 分库分表 vs 分区
  • 每天认识一个设计模式-外观模式:化繁为简的接口魔法
  • 【Java】List列表和数组有什么区别?应用场景有哪些?
  • 免费远程软件实现手机操控电脑的新手教程来了
  • 【centos】经常使用的脚本
  • 并发上传及 JS 的单线程特性
  • Scala总结(四)
  • 基于SpringBoot的水产养殖系统【附源码】
  • 双轴注意力+多分辨率成像:TIMEMIXER++在时序建模领域再创佳绩
  • ffmpeg 使用不同编码器编码hevc的速度
  • 睡不着锻炼贴士补充
  • AI时代下的代理IP新机遇:解锁数据、安全与效率的隐形密码
  • 哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
  • 【力扣hot100题】(052)课程表
  • 零基础快速部署网站:使用宝塔面板一键安装 LNMP/LAMP 环境实战教程