打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
开源 lua 调试器

开源 lua 调试器  

2011-06-04 03:14:57|  分类: 我的开源 |  标签:lua调试器  lua  debuger  lua远程调试   |举报 |字号 订阅


暂且,存在某些小瑕疵。

支持调试纯脚本以及调试嵌入方式使用的lua脚本, 仅仅为远程调试(socket通讯)。
类似GDB的使用方式。


项目地址:http://code.google.com/p/ldb/

详细文档地址:这里    - 最新更新

它是什么:

是一个lua 的远程调试器。

使用平台:

Windows(32位可用,64位暂时未测试) 与 Linux(32位和64位都可用)

简略的说明:

文件lxdebug.lua为被调试者

文件ldbclient.lua为调试者

适用场合、范围:

  1. 被调试端是纯脚本。 此时切记在脚本最开始执行的地方如此写:
  2. local ldb = require"lxdebug"

    ldb.debug_purelua() --此函数在lxdebug.lua里定义,切记先明白何时调用何种接口。 参数为端口。若不指定,则端口为0xdeb。端口被占用则会无法启动,并有错误日志。

2. 被调用者存在逻辑帧的概念。(可以理解为间隔比较小的时间,比如数百ms之内, 会重复进入某个函数)。 此时最好别用纯脚本的调试接口,因为他不支持高速模式。所谓高速模式:当存在逻辑帧概念的时候,会根据断点有效情况等,来决定是否hook行事件,若无断 点,则其额外开销极小,就是在逻辑帧函数中做一下检测,而不是执行每行时都检测下。使用方法如下:
初始化的文件中:
local ldb = require"lxdebug"

ldb.startdebug_use_loopfunc()--可以传入端口;默认为0xdeb

在逻辑帧执行的函数中执行如下函数: ldb.debug_runonce()

当要停止当前的调试行为或者要清除,则调用: ldb.stopdebug()

注意:

若在win下跑调试者,则有个问题注意下。 若当前系统控制台为本地编码,而远端被调试者脚本代码为utf8编码,那么l以及其他会显示文件内容的命令会为乱码。 若在Linux下跑调试者,因为linux终端默认(大多数吧)就是utf8,这样也要注意,远端脚本存utf8比较好。 具体看使用者。

目前存在的问题:

如下:

a.lua 内容:

1. local s_mgr = {}

2. function aa()

3. local aa1 = 3

4. aa1 = aa1 + 1

5. end

b.lua内容:

require "a"

aa()

入口为函数b。

当在函数aa中下断点,执行到第四行时,查看aa1时,值为3,而到第五行,则查看会提示找不到符号aa1,不过这个暂时可以容忍,记得vc里,看最后一行时,若其有改变局部变量的行为,也会看不到(也可能记错。),此问题暂且不论,有另一个比较不爽的问题。

当在第四行时,看a.lua里的文件局部变量s_mgr时,无法看。。。暂时没找到如何获取,若有哪位朋友知道如何获取,可以告知下我吗?
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
1.3 使用lua 调试器
lua调用C++函数
基于COCOS2D-X的二次开发的自有引擎方案分享
编程语言json_encode,汉字有关问题
uLua最新的Unity+Lua热更新解决方案!!
Redis 秒杀实战
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服