我不知道如何高效地调试脚本。我需要像Python这样的堆栈输出,但是默认情况下Lua / C没有此输出。我不知道该如何启用。或者简单地说,如何从脚本获取错误输出?

最佳答案

您可能正在寻找xpcall和debug.traceback的组合。您可以使用xpcall向其传递错误处理程序,并使用debug.traceback获取堆栈跟踪:

function functionThatMayFail()
  error('Failed')
end
local success, result = xpcall(functionThatMayFail,
  function(err) return debug.traceback(err) end)
print(success, result)


此代码将打印:

false   xpcall.lua:2: Failed
stack traceback:
    xpcall.lua:6: in function <xpcall.lua:6>
    [C]: in function 'error'
    xpcall.lua:2: in function <xpcall.lua:1>
    [C]: in function 'xpcall'
    xpcall.lua:5: in main chunk
    [C]: ?

10-06 01:24