我刚和Lua玩了一下,并尝试了Koneki eclipse插件,这很不错。问题是,当我在一个函数中进行更改时,我正在调试此更改在保存更改时无法生效。所以我不得不重新启动应用程序。如果我可以在调试器中进行更改,那么它会非常好,并且它们将随时生效,例如使用Smalltalk或在Java中进行热代码替换时。任何人都知道这是否可能?如何在Lua中编写代码“在调试器中”?
6
A
回答
5
在某种程度上可能会有一些限制。我一直在开发提供此功能的IDE/debugger。它使您可以访问远程控制台,以在正在运行的应用程序的上下文/环境中执行命令。 IDE还支持live coding,在您对其进行更改时重新加载修改后的代码;请参阅演示here。
主要限制是您不能修改当前运行的功能(至少不需要对Lua VM进行更改)。这意味着只有当您退出并重新输入该功能后才能看到您对当前运行功能所做更改的效果。它适用于反复调用相同功能的环境(例如游戏引擎调用draw
),但在您的情况下可能不起作用。
另一个挑战是处理upvalues(在你的函数之外创建并在其中引用的值)。有一些方法可以“读”当前的upvalues,并在创建(new)函数时重新创建它们,但它需要进行一些代码分析来查找将重新创建哪些函数以查询upvalue,获取当前值,然后为这些价值创造新的环境并为它们分配适当的价值。我当前的实现不会这样做,这意味着您需要使用全局变量作为解决方法。
前一天在Lua邮件列表中也有relevant discussion。
相关问题
- 1. 如何在MFC vs2005中为调试模式编写代码
- 2. 如何在nginx配置中调试lua代码?
- 3. 建议在C#中编写测试代码并在vb.net中编写代码
- 4. 如何在Lua中编写文件?
- 5. 如何在LINQ2SQL中编写此代码?
- 6. 如何在javascript中编写html代码?
- 7. 如何在钛中编写android代码
- 8. 如何在Angularjs中编写jQuery代码?
- 9. 如何在CoffeeScript中编写此代码?
- 10. 如何在JRuby中编写此代码?
- 11. 如何在PHP中编写html代码?
- 12. 如何在CPS中编写此代码?
- 13. 如何在jQuery中编写此代码?
- 14. 如何在JavaScript库中编写代码?
- 15. 如何编写代码示例,在代码中缺少代码?
- 16. 如何在codedom编译代码中调试/中断
- 17. 如何在Lua中重复代码?
- 18. 如何在Eclipse中调试R代码
- 19. 如何在eclipse中调试php代码?
- 20. 如何在代码中编写正确的Cest格式测试?
- 21. 如何在javascript中调试库函数的重写代码?
- 22. 在C++代码中启动调试器
- 23. 在代码中启动调试器
- 24. 在代码块中调试
- 25. 如何在asp.net代码中使用C编写javascript代码#
- 26. 如何在csHTML中编写服务器端代码
- 27. 如何在Perl中为WWW编写服务器端代码?
- 28. 如何在Ceylon中编写代码生成器
- 29. 如何在JSON解析器中为我的代码编写AsyncTask?
- 30. 如何在TestNG中为侦听器编写代码?
有见地的答案,保罗。谢谢。 – OlliP 2013-04-25 17:51:39
我认为这在Smalltalk中起作用的原因是因为整个代码是一个完全在内存中的二进制快照(在Smalltalk中称为“映像”)(当Kava已经存在时,Smalltalk链接库会晚很多)。所以我想Smalltalk似乎是你能做到这一点的唯一语言。很可惜... – OlliP 2013-04-25 19:56:15