先上效果图:
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 开启调试服务器,然后在你要调试的服务开始处增加一段代码,用来连接调试服务器,整个过程比较繁琐。
如果调试一些简短的逻辑,建