随笔 - 17  文章 - 48  trackbacks - 0
<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(3)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

用Lua也有大半年了,从用Lua开始就想写个Lua调试器,不过由于种种原因没写,这周上班抽了点时间写了(我承认上班偷懒了,不过多是休息时间)。(点此下载

Lua本身没有提供调试器,不过它自带了一个debug库,提供了基本的变量值获取和代码执行hook,有了这些基本功能要写一个调试器不难。

此调试器根据调试方式分为normal、step in、step over、next line四种mode,分别对应断点、步进、跳出函数、执行下行的功能。断点类型分为行断点和函数断点,分别在执行到相应行和相应函数的时候断下。在断下的时候就可以打印和修改变量,通过建立一个新的chunk并将环境设置成相应函数的环境,再执行chunk来获取和修改变量。

因为是命令行的,在命令行还没有机会添加断点的时候,要添加断点就要通过debugger.addfuncbreak和debugger.addlinebreak来添加函数和行断点,通常Lua是用于C++的脚本语言,因此程序通常是有一个可以直接执行Lua脚本指令的入口,这样的入口就可以打下第一个断点,这样在断下断点后就可以在命令提示符下做所有的操作了。

代码是上班抽时间写的,写的很随意,也没多少注释,权当玩具吧。目前的功能基本能满足我的要求了,也不打算继续改进了。调试器是用来帮助找错误,不要过分依赖调试器。Robert C. Martin说Debuggers are a wasteful Timesink。虽说有些偏激,但是不无道理。

posted on 2011-01-01 01:44 airtrack 阅读(4733) 评论(3)  编辑 收藏 引用

FeedBack:
# re: 简单的Lua命令行调试器 2011-01-02 22:27 expter
我见云风也写过,可以集成到项目中调试不哦。  回复  更多评论
  
# re: 简单的Lua命令行调试器 2011-01-03 01:32 airtrack
@expter
可以啊,这个调试器主要就是用来调试作为C++扩展的Lua。  回复  更多评论
  
# re: 简单的Lua命令行调试器 2011-01-06 17:44 true
如果把luadebugger写成VS的插件,估计可以卖钱了,我有这样的想法,但也是没有时间去实现  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理