如何远程调试Lua?

Gol*_*les 13 debugging lua http

我正在寻找远程调试Lua的最佳方法(例如从Web浏览器).

我看到了RemDebug,但最后一次项目更新是在2006年完成的.它适用于Lua 5.0和5.1,但是Lua 5.2非常接近,我没有看到RemDebug很快得到更新.

我可以在我的调试主机上安装一个小型嵌入式Web服务器,并使用类似RemDebug的东西与它通信,并通过HTTP执行远程调试.

建议表示赞赏.

Pau*_*nko 12

我开发了一个基于RemDebug(MobDebug)的新调试器,它具有新命令,新功能,错误修正以及与IDE的集成.

MobDebug基于客户端(debugee)和服务器(控制器)之间的TCP交互.RemDebug和大多数其他远程调试器也是如此.您可能能够运行其他东西(如WebSockets或HTTP),但您仍然需要能够运行协同程序和调试挂钩来控制正在调试的应用程序.

调试过程的架构非常简单:

  • 您有一个要调试的应用程序
  • 您还有一个带控制器的调试器
  • 应用程序加载调试器的客户端组件,从而打开与控制器的连接
  • 控制器接受来自命令行或IDE的命令(MobDebug提供两者;它与ZeroBraneStudio集成,并提供可编写脚本的方式来运行它)
  • 加载应用程序时,调试器会安装一个调试挂钩,该挂钩在每一行/ call/return上运行.从这个调试钩子中,对调试器进行恢复调用,调试器然后可以从控制器执行命令(比如安装断点,计算表达式等).当发送下一个可执行命令(如运行或步骤)时,调试器将返回到钩子,然后钩子返回到应用程序以允许它继续.

有可能模仿现有的套接字接口(因为它只使用connect/send/receive和select/timeout来中止应用程序)并重用大部分库.我仍然不确定你为什么要在浏览器中运行它,因为你可以在任何支持TCP的东西上运行应用程序(我有一个工作原型调试从我的桌面在移动设备上运行的应用程序).


Uri*_*hen 1

我不确定您是否需要远程调试 lua 或询问是否通过 HTTP 进行此操作;我正在回答前者,但不知道通过 HTTP 来回答这一问题的方法。

LuaEditDecoda都允许您远程连接到正在运行的 lua 脚本(在同一台计算机上和远程计算机上的不同进程上)。

Decoda 可以为 lua VM 施展魔法,无需对 VM 进行任何更改;使用 LuaEdit,您需要使用提供的 DLL 或库以特定方式创建 VM。