我不知道如何有效地调试脚本。我需要一个像Python一样的堆栈输出,但默认情况下,Lua/C没有这个。我不知道如何启用它。或者简单地说,如何从脚本获取错误输出?在脚本中获取Lua运行时错误
4
A
回答
6
您可能正在寻找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]: ?
0
Lua解释器默认会产生错误输出。例如。 (我介绍了一个错字到这个脚本):
$ lua random.lua
lua: random.lua:6: attempt to call global 'xists' (a nil value)
stack traceback:
random.lua:6: in main chunk
[C]: ?
你能澄清你想要做什么或可能更好的东西是不会发生,你希望发生在错误输出方面?
+0
这不会为我工作,因为我实现主程序中的函数包装器。它不能在程序本身之外使用。有时候会有太多的错误一起发生,其中大多数很容易解决,所以不必发布。 – ekd123
相关问题
- 1. 在长时间运行的PHP脚本中获取错误
- 2. Lua脚本错误
- 3. 运行scala脚本保存在utf-8中获取错误
- 4. 在Docker中运行Lua脚本
- 5. 获取运行时错误
- 6. 运行自定义Python脚本时获取错误
- 7. 运行时错误9在VBA脚本
- 8. 如何运行.lua脚本?
- 9. 如何运行Lua脚本?
- 10. 获取Python脚本在旧版本上运行时出错
- 11. 在Jenkins上并行运行脚本时捕获错误状态
- 12. Gmod错误darkrp lua脚本
- 13. 错误LUA-redis的脚本
- 14. Lua脚本错误Msg_429
- 15. 在网页上获取错误后重新运行脚本
- 16. 获取python脚本的运行时间
- 17. SSIS脚本组件运行时错误
- 18. 每行运行Lua脚本行
- 19. PowerShell在脚本已经运行时的脚本错误
- 20. 在VBA脚本中获取错误438
- 21. 从redis客户端运行Lua脚本时出错
- 22. 错误运行脚本
- 23. 错误运行v脚本
- 24. Vb脚本获取超时错误
- 25. 在归档项目时运行自定义shell脚本'运行脚本'错误
- 26. 在luafilesystem中使用lua时出现MSVCR80.dll运行时错误
- 27. 在SSIS中使用VBA脚本时运行时错误
- 28. 如何在Lua脚本中获取当前的utc时间?
- 29. 在执行与MongoDB集成的Pig脚本时获取错误
- 30. JSON错误和运行脚本错误
它如何处理具有多于1个参数的函数? – ekd123
我正在使用带有匿名函数的xpcall(让它调用其他函数)。它现在正是我想要的。谢谢! – ekd123
有点迟了,但你甚至不需要这个内部函数。 功能functionThatMayFail() 错误( '失败') 结束 当地成功,结果= xpcall(functionThatMayFail,debug.traceback) 打印(成功,结果) [见尼克金门的约LUA好的文档的最后一个例子](http://www.gammon.com.au/scripts/doc.php?lua=xpcall) – DelGurth