我不知道如何有效地调试脚本.我需要像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)
Run Code Online (Sandbox Code Playgroud)
此代码将打印:
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]: ?
Run Code Online (Sandbox Code Playgroud)