我正在寻找远程调试 Lua 的最佳方式(比如从网络浏览器)。
我看到了RemDebug , 但最后一次项目更新是在 2006 年完成的。它适用于 Lua 5.0 和 5.1,但 Lua 5.2 非常接近,我看不到 RemDebug 会很快得到更新。
我可以在我的调试主机上安装一个小型嵌入式网络服务器,并使用 RemDebug 之类的东西与其通信,并通过 HTTP 执行远程调试。
欢迎提出建议。
最佳答案
我开发了一个基于 RemDebug ( MobDebug ) 的新调试器,具有新命令、新功能、错误修复以及与 IDE 的集成。
MobDebug 基于客户端(被调试者)和服务器( Controller )之间的 TCP 交互。 RemDebug 和大多数其他远程调试器也是如此。您可能能够在其他东西(如 WebSockets 或 HTTP)之上运行,但您仍然需要能够运行协程和调试 Hook 来控制正在调试的应用程序。
调试过程的架构非常简单:
- 您有一个要调试的应用程序
- 您还有带 Controller 的调试器
- 应用程序加载调试器的客户端组件,打开与 Controller 的连接
- Controller 接受来自命令行或 IDE 的命令(MobDebug 提供两者;它与 ZeroBraneStudio 集成,还提供了一种可编写脚本的方式来运行它)
- 加载应用程序时,调试器会安装一个调试 Hook ,它会在每一行/调用/返回时运行。从这个调试 Hook 中,对调试器进行恢复调用,然后调试器可以执行来自 Controller 的命令(如安装断点、计算表达式等)。当发送下一个可执行命令(如 run 或 step)时,调试器返回 Hook ,然后返回到应用程序以允许其继续。
可以模仿现有的套接字接口(interface)(因为它只使用连接/发送/接收和选择/超时来中止应用程序)并重用大部分库。我仍然不确定您为什么要在浏览器中运行它,因为您可以在任何已经支持 TCP 的应用程序上运行该应用程序(我有一个工作原型(prototype),可以从我的桌面调试在移动设备上运行的应用程序)。
关于debugging - 如何远程调试Lua?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438751/