Lua开源:mare - 像 JavaScript 一样调试 Lua
FatChifley
8年前
<p><a href="/misc/goto?guid=4959742195841431644"><img src="https://simg.open-open.com/show/3792a3889c4c5f360a4e2e74cd0f6605.png" alt="Lua开源:mare - 像 JavaScript 一样调试 Lua" width="740" height="500"> </a></p> <h2>简介</h2> <p>基本原理是根据云风博客文章<a href="/misc/goto?guid=4959742195938271553">如何优雅的实现一个 lua 调试器</a>,使用文章里所说的 C 调试模块,实现一个 Debug VM,内建一个客户端把数据发出去,由服务器翻译成 <a href="/misc/goto?guid=4958972383284346144">Chrome Debugging Protocol</a>,然后就可以直接用 Chrome 浏览器内建的 <a href="/misc/goto?guid=4959742196054533819">DevTools</a> 来做交互调试了。</p> <p>脑洞其实来自 非死book 的 <a href="/misc/goto?guid=4958867210220623934">Stetho</a>,使用 DevTools 来调试 Android。</p> <h2>特性</h2> <p><em>本项目仍然出于早期开发阶段,遇到坑务必淡定</em></p> <p>已实现的</p> <ul> <li>远程调试模型,Lua 模块,服务端,图形界面可以跑在不同系统上</li> <li>数据对象审查功能,支持循环引用,非字符串 key,metatable 查看,调用栈查看</li> <li>断点调试,按行号,按函数 call/return,按探测点名,带黑名单</li> <li>单步执行,标准三件套 Step Over、Step Into、Step Out</li> <li>查看中断变量数据,栈、local 和 upvalue</li> <li>按条件中断,Watch 表达式,调试上下文 REPL</li> <li>源码交互,项目目录树,代码高亮,日志和函数源码定位</li> </ul> <p>计划中的</p> <ul> <li>打包 MacOS 版本,因为不能在 Linux 服务器上交叉编译</li> <li>支持 Android/apk,iOS/ipa,因为不能直接访问文件系统,需要自己实现 loader</li> <li>VSCode、Atom 插件,理论上拿 JavaScript 来改改就行了</li> <li>中断时,展开变量时,按需获取数据,现在只是限制数据量的快照</li> <li>调试模块参数可配置,某些地方还是硬编码</li> <li>完善前端管理页面,会话管理页面还是原始</li> <li>国际化,现在注释和文档还是用中文</li> <li>各种优化,各种测试,各种文档,各种重构</li> </ul> <h2>兼容性</h2> <p>下面的环境测试过基本可用,只要编译时选择 Lua 5.3 解析器</p> <ul> <li><a href="/misc/goto?guid=4959742196168063846">ejoy2d</a> 游戏引擎框架</li> <li><a href="/misc/goto?guid=4959742196250388437">fcitx</a> Linux 小企鹅输入法</li> <li><a href="/misc/goto?guid=4958540860078566968">love2d</a> 游戏引擎框架</li> <li><a href="/misc/goto?guid=4959742196368868641">nmap</a> 网络扫描器</li> <li><a href="/misc/goto?guid=4958837496859528274">torch</a> 机器学习框架</li> <li><a href="/misc/goto?guid=4958189306643968874">vim</a> 文本编辑器</li> </ul> <h2>许可证</h2> <p>MIT</p> <p><strong>项目主页:</strong><a href="http://www.open-open.com/lib/view/home/1489799229111" rel="nofollow" style="box-sizing: border-box; background-color: rgb(255, 255, 255); color: rgb(0, 95, 169); text-decoration: none; font-family: "Microsoft YaHei", Verdana, sans-serif, SimSun; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;">http://www.open-open.com/lib/view/home/1489799229111</a></p> <p> </p>