My Toy Lua Debugger

news/2025/2/26 7:17:56
  My Toy Lua Debugger

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://kneo.blogbus.com/logs/24242949.html

地址:

http://code.google.com/p/lua-debugger/

第一个版本的图形界面截图:

点击查看原始尺寸

最新的界面:

点击查看原始尺寸

缘起: 

做 这个东西的源起是一次看几个包含coroutine的Lua小脚本,结果被几个coroutine绕来绕竟然没绕明白……于是打算找一个调试器。我的需求 很简单,能单步跟踪,设断点就差不多了。结果试了好几天没试到一个有用的,最后下了一个共享的IDE Decoda,花了一个小时,算是调试清楚了。而这个Decoda,虽然功能似乎还可以,但我想还远远没到能让人愿意为之付钱的地步,和其他开发语言的调 试器也实在没的比。所以当时有想法自己做一个。对我来说,能单步调试就可以了。

但当时并没有动手。因为很久没写代码了,Lua又不怎么熟,所以很没自信。

第二天是星期一,起床有些不舒服,顺便就请了一天假。到下午有些蠢蠢欲动,所以开始尝试了。没想到按照我的思路,实现竟然非常简单(当然也多亏了Lua本身提供的调试机制)。到晚上已经把远程调试的server端写好了,客户端写了个命令行的东西。

图形界面的出现,也比我预期的早很多。因为我不熟悉UI领域,感觉比较简单的是wxPython,所以找了找wxPython的Demo,把里面的一个editor代码改了改,竟然凑出了一个UI……后果是熬夜熬到早上5点,又请了一天假。

所以这个原型,可以说是一天开发出来的。虽然代码上的工作并不多,甚至可以说缓慢。但是能做出一个可用的东西,已经令我很满意了。

后 面完善的工作,却令人无奈。搞GUI开发就是在消耗生命——无穷无尽的细节。本来我一向只喜欢原生风格的桌面应用程序,对HTML/AJAX、 Flash、Java/SWING之类的东西都很讨厌(这也是为什么我选择wxPython的一个原因)。但我确实有必要多学习下Flex/WPF的东西 了。

最终(或许用这个词还太早了)的结果,是这么一个调试器。功能很受限,算不上真正的调试器。但是它可以单步跟踪、设置断点、查看变量, 所以从教学目标上讲,还是有点价值的。至少以后碰到那种几个coroutine你来我往的小脚本,可以用来帮助理清逻辑——这毕竟是我的本意。希望对正在 学习Lua或者Python或者wxPython的朋友略有帮助,虽然我从不幻想世界上会有人试用它。

后面的工作还很多,哪便只是修BUG(issue list上问题不少)。希望自己能渐渐对这个东西失去兴趣——实在不想把时间浪费在这里了。


随机文章:

用Lua重写了以前的一个C++程序 2008-05-12
为什么我讨厌Ruby 2008-04-29
竟然上水木十大了…… 2008-04-27
我常用的几个Firefox扩展 2008-04-15
终于解决了hha.dll的调用问题 2008-03-23

收藏到: Del.icio.us

http://kneo.blogbus.com/logs/24242949.html

http://www.niftyadmin.cn/n/4819218.html

相关文章

现实世界的Windows Azure:就Metanga采访MetraTech公司CEO,Scott Swartz先生

MSDN:和我们谈谈你们公司和你们的解决方案。 Swartz:我在1998年开始创办MetraTech,Metanga是我们的一款新的软件即服务(SaaS)产品。Metanga是一款多租户的SaaS计费解决方案,旨在帮助软件独立开发商在转移到…

Unity_Renderer 中(sharedMaterial 和Miaterial)

sharedMaterial 和Miaterial 简介: 我们在使用unity引擎的时候 ,有时候需要去修改某个物体上的material,在Unity的Renderer类里,提供了两个方法接口供我们使用。 Renderer,material 和 Renderer.sharedMaterial 如果你需要修改模…

HTTP扩展框架

目录1.序论 32.协定表记法 33.扩展申明 33.1标题字段前缀 44.扩展标题字段 54.1End-to-End扩展 54.2Hop-by-Hop扩展 54.3标题字段扩展响应 65.强制HTTP请求 65.1强制请求的实现 76.强制HTTP响应 77.510不扩展 88.发布扩展 89.缓冲考虑 810.安全考虑 911.参考书目 91…

CWnd类临时对象会在主线程OnIdle时被DeleteTempMap函数清除掉。

CWnd类临时对象会在主线程OnIdle时被DeleteTempMap函数清除掉。 为什么我使用Sleep函数后改变了我的CWnd指针对象的m_pCtrlSite的值悬赏分:30 - 提问时间2008-4-30 15:22 问题为何被关闭我想使用线程控制我的按钮的摆动,可是当我使用sleep函数后,我的CWnd *pWnd的m_…

参与2011年7月13日举行的Azure国际猜拳锦标赛,赢取5,000美元大奖

你想要编写自己的“bot”角色并测试你的技能,在线同来自美国,加拿大,中国,德国,新西兰,瑞典和英国的Windows Azure开发者一教高下,并赢取5,000美元大奖吗?请先注册Azure国际猜拳锦标…

在Windows桌面创建快捷方式

在Windows桌面创建快捷方式http://jike.it168.com/11709963/spacelist-blog-itemtypeid-612-page-32----老妖注:偶在Windows ADV 2000,C Builder 6.0下编译通过. :D API提供了一个叫做IShellLink的COM接口允许我们创建快捷方式。为在桌面创建快捷方式,我…

在Windows Azure上使用WAS和IIS托管服务

Adoption Program Insights 系列描述了微软服务咨询的经验 (包含在Windows Azure Technology Adoption Program内,该项目旨在帮助客户开发Windows Azure平台上的解决方案)。这篇文章由Tom Hollander发表。 许多开发人员选择使用面向服务的技术来将大型系统分成更小的…

在对话框中加入工具条与 RepositionBars的调用

在对话框中加入工具条与 RepositionBars的调用 2008年01月17日 星期四 13:10新建一个对话框IDD_DIALOG1,然后新建一个工具栏IDR_TOOLBAR1,要将上面的工具条插入到对话框当中的话,可以如下操作 BOOL ExaDg_1::OnInitDialog() { CDialog::OnInitDialog(); // …