« 开发笔记 (10) :内存数据库 | 返回首页 | 开发笔记 (11) : 组播服务 »

跟踪调试 Lua 程序

我们用 lua 做主要的项目开发语言,一直有同学希望可以在 IDE 里单步跟踪调试 lua 代码。我总觉得这个坏习惯是被 Windows 带坏的。当然,很多年前,我也尝试过编写一个图形界面的 debugger 。后来这玩意半途而废了。因为我觉得没啥实用价值,需要这样去调试 lua 程序的程序员反正也写不好 lua 程序。宁可不要这种工具让 lua 程序员的代码质量能提高一点。

后来过了两年,还在网易时,又有同学要求有一个方便点的调试器。我又写过一个远程调试器,gdb like 的界面,用 C/S 方式调试,并用 GTK 配了一个 GUI 的 client 。主要就是远程设置断点,观察变量等。有兴趣的同学可以看这一篇

这套东西不多提了。今天又有人老话重提。我觉得吧,与其做一个交互式的调试器,不如做一个 trace log 简单实用。毕竟在生产环境,不是有那么多机会让你中断下服务单步调试的。

我们如果可以 log 下需要监控的函数的内部执行流程,以及相关变量的变化。是很容易找到 bug 的。

只要 log 格式规范,很容易另外写一个独立的 GUI 工具,带代码编辑器,可以交互式的重现运行流程。

我花了两小时随手写了一个 trace 工具,还凑合能用。它可以跟踪调用 trace 的当前函数的运行。当函数返回后,自动把 debug hook 取消。

如果再花点精力,可以加上监视 foo.bar 这样的变量。这需要对 table 访问的支持,不过我懒得做了。

有兴趣看看的同学可以从 github 仓库自取

Comments

云风大大,一个图形界面的 debugger 这个你开源了么?

luaEditor编辑调试软件:
http://www.vdisk.cn/down/index/10220046

阿什顿

Lua的调试用decoda就好了,简单方便。。。

讲得挺细的!支持下

路过,酱油啊
楼上的哥们们不要老是在怕马好吗
不要过多的随声附和

哈哈,同意。看来我不学用调试器debug是对的。

目前还没遇到过用log解决不了的问题。

天天来闹 天天来学习

敢问下您用啥环境开发lua?IDE吗?

decoda可以做这个

“后来过了两年,还在网易时,又有同学要求有一个方便点的调试器。我又写过一个远程调试器,gdb like 的界面,用 C/S 方式调试,并用 GTK 配了一个 GUI 的 client 。主要就是远程设置断点,观察变量等”

这个能开源就好了。

打gdb命令调试lua对不喜欢命令行的人来讲不方便。

不知道以后服务端的代码开源不

多谢分享

其实只要形成一种状态跟踪的机制,并养成习惯,就可以了,机制优于代码。习惯造就细节。

Post a comment

非这个主题相关的留言请到:留言本