skynet 单步调试方案(zbstudio remote debug)

先上效果图:
在单步调试snax服务的一个函数

skynet 调试难题

skynet 的业务代码全是用 lua 写的,其实现在 lua 的调试工具已经很多了,也有很多好用的,但是由于 skynet 是多服务的,每个服务都是一个 lua 虚拟机,成百上千的 lua vm 导致现有的 lua 调试工具都没法直接使用。

虽然云风提供了一个简单的调试控制台,但实在谈不上好用,基于命令行的模式对于用惯各种现代 IDE 调试的我们来说实在无法接受。

这篇文章是云风对 skynet debug console 的介绍:
在线调试 Lua 代码
里面也有云风对于调试的态度:

单步跟踪调试单个 lua coroutine 的能力。这对许多新手来说是个学走路的拐杖,虽然有人一辈子都扔不掉。

对于新生代的程序员来说,他们从入行开始,使用的就是 VS+VA/Eclipse 等等现代 IDE,也习惯了这种方便的调试方式,没理由开历史的倒车,去使用命令行调试吧?

当然不是说命令行调试不好,这也是一个合格的服务端程序必备的技能(查线上问题),但是调试效率就不那么高了。

工具就只是工具,既然有更高效的工具,能提高生产效率,那没理由不用是吧,程序员的时间可都是钱啊!

使用 zbstudio 远程调试单个服务

这里给出一个使用 zbstudio 调试的方案,该方案可以单步调试 skynet 的 lua 代码,但是只能调试单个 lua vm,无法跨服务调试,遇到 skynet.call 可以正确返回结果。

但该方案比较麻烦的是,每次调试之前,都要先用 zbstudio 开启调试服务器,然后在你要调试的服务开始处增加一段代码,用来连接调试服务器,整个过程比较繁琐。

如果调试一些简短的逻辑,建

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Skynet Debug是指对Skynet系统进行调试和排错的过程。Skynet是一个开源的高性能分布式游戏服务器框架,为开发者提供了一套简单易用、高效稳定的游戏服务器解决方案。 在进行Skynet Debug时,首先需要通过查看系统日志来定位问题。Skynet系统会记录各个模块的运行情况和错误信息,开发者可以通过这些日志信息来判断是否有错误发生,并定位出错的位置。 其次,开发者可以使用调试工具来进行线上调试Skynet提供了丰富的调试工具,比如skynet.abort函数可以在运行时终止服务,并打印出完整的调用栈信息,帮助开发者快速定位错误。此外,还可以使用skynet.trace函数跟踪消息的传递流程,观察各个模块之间的交互情况,以找出可能存在的问题。 另外,对于一些复杂的问题,开发者还可以使用代码注入的方式进行调试Skynet提供了插件机制,可以动态加载自定义的模块,并在运行时注入代码,以修改或监控系统运行过程中的一些关键点,帮助开发者检测潜在的问题。 在调试过程中,需要注意一些常见的问题。比如,可能因为不同模块间的消息传递顺序不一致而导致问题;还可能出现资源泄露或内存溢出等问题;另外,网络通信的稳定性和数据传输的正确性也需要关注。 总之,Skynet Debug是开发者对Skynet系统进行调试和排错的重要过程,通过使用系统日志、调试工具以及代码注入等方法,可以帮助开发者定位问题并解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值