Lua 远程调试器我们现在的手游完全用 Lua 开发,这就有了调试的需要。 今年曾写过一个 lua 代码跟踪器,主要是用于服务器开发。服务器程序不适合完全 stop the world 慢慢调试,以输出 log 为主。但现在在客户端,那么一个类 gdb 的调试环境更好一些。 lua 的调试器在我还在网易时就做过 。从网易出来后没带代码,需要用就要重新写了。好在 lua 的 debug 接口非常全,今天花了 2 个小时就重新实现了一个简陋的雏形。 这是一个远程调试器,启动程序的时候利用 ldebug.start 监听一个调试端口,程序跑起来后使用 nc 或 telnet 就可以连上去调试。 我们可以在 lua 代码中用 ldebug.probe 放一些硬断点。平常是不激活的,也没有什么额外开销。 调试端口连接上后,只能注入一些 lua 代码运行,看一些全局变量。但在调试控制台上可以输入 stop 让程序在最近的 ldebug.probe 调用处停下来。然后我们就可以用类似 gdb 的指令单步运行程序,或是观察一些边变量。 其实在停止程序后,还可以做一些断点或条件断点的功能。今天没空做了,等用到再说。 代码放在 github 上,不定期维护。有兴趣的同学可以完善它。 |
|