lua - 在Lua中编写代码 "in the debugger"的方法?

标签 lua

我只是玩了一下 Lua 并尝试了 Koneki eclipse 插件,它非常好。问题是,当我对正在调试的函数进行更改时,这些更改在保存更改时不会生效。所以我被迫重新启动应用程序。如果我可以在调试器中进行更改并且它们会在运行中变得有效,例如使用 Smalltalk 或扩展到 Java 中的热代码替换,那就太好了。有人知道这是否可能吗?

最佳答案

在一定程度上有一些限制是可能的。我一直在开发 IDE/debugger提供此功能。它使您可以访问远程控制台以在正在运行的应用程序的上下文/环境中执行命令。 IDE 还支持 live coding ,它会在您对其进行更改时重新加载修改后的代码;查看演示 here .

主要的限制是你不能修改当前运行的函数(至少在不改变 Lua VM 的情况下)。这意味着您对当前运行的函数所做更改的效果只有在您退出并重新进入该函数后才能看到。它适用于重复调用相同函数的环境(例如调用 draw 的游戏引擎),但可能不适用于您的情况。

另一个挑战是处理上值(在函数外部创建并在函数内部引用的值)。有一些方法可以“读取”当前上值并在创建(新)函数时重新创建它们,但是需要一些代码分析来查找将重新创建哪些函数来查询它们的上值,获取当前值,然后用这些值(value)创造一个新的环境,并为他们分配适当的值(value)。我当前的实现没有这样做,这意味着您需要使用全局变量作为解决方法。

还有relevant discussion就在前几天在 Lua 邮件列表上。

关于lua - 在Lua中编写代码 "in the debugger"的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16218399/

相关文章:

unit-testing - docker单元测试设置

lua - 访问在另一个对象/脚本中找到的数据

lua - Lua中将字符串转换为数组

lua - 转换时更新目标坐标

python - 通过共享库连接 Python 和 Torch7(Lua)