在lua pcall中获取错误的真实堆栈跟踪
所以对于我的pcall语句,我一直在做这样的事情
local status,err = pcall(fn) if not status then print(err) print(debug.stacktrace()) end 这适用于一些基本的东西,但问题是debug.stacktrace()返回CURRENT相对堆栈跟踪,而不是错误的堆栈跟踪.如果fn中的错误在堆栈中发生了10级,那么我就不知道它究竟发生在哪里,只是这个pcall块失败了.我想知道是否有办法获得pcall的堆栈跟踪而不是当前的堆栈跟踪.我试过debug.stacktrace(错误),但它没有什么区别. 解决方法
您需要使用xpcall提供自定义函数,该函数将堆栈跟踪添加到错误消息中.
From PiL:
您可以查看此patch that extends 正如评论中所建议的那样,您可以使用本地ok,res = xpcall(f,debug.traceback,args …)与Lua 5.2或LuaJIT(打开Lua 5.2兼容性)并使用上面提到的Lua 5.1补丁. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |