如何调试月稿?



我试图编写一些基于Love2d框架的游戏,从moonscript编译。每次我在代码中出错时,我的应用程序都会抛出错误,此错误指的是编译的 lua-code,而不是 moonscript,所以我不知道这个错误到底在哪里发生。请告诉我,在这种情况下有什么解决方案?谢谢。

Moonscript 确实支持源映射/错误重写,但仅在moon解释器中运行时支持:https://moonscript.org/reference/command_line.html#error_rewriting

我认为它可以在另一个 lua 环境中启用,但我不完全确定会涉及什么。

它肯定需要 moonscript 保留在编译期间创建的源映射表,所以你不能使用moonc; 而是使用moonscript模块来及时编译 require'd 模块:

主.lua

-- attempt to require moonscript,
-- for development
pcall(require, 'moonscript')
-- load the main file
require 'init'

初始化月亮

love.draw = ->
print "test"

正确安装此代码和moonscript后,您可以正常使用love .运行项目。require 'moonscript'调用将更改require以即时编译moonscript模块。性能损失可以忽略不计,加载所有模块后没有区别。

调试对于几乎所有源到源编译系统来说都是一个问题。目标语言不知道原始语言的存在,所以只能用目标语言来谈论事情。目标语言和原始语言越不同,调试就越困难。

这是C++编译器不再编译为 C 的重要原因。

处理这个问题的唯一真正方法是熟悉Moonscript编译器如何从您的Moonscript代码生成Lua。学习Lua并仔细阅读输出Lua,将其与给定的Moonscript进行比较。这将使您更容易将给定的Lua错误和源代码映射到创建它的实际Moonscript代码。

相关内容

  • 没有找到相关文章

最新更新