unity-luaFramewrok中lua错误信息的捕获
来源:互联网 发布:网络被屏蔽怎么破解 编辑:程序博客网 时间:2024/05/29 17:22
现有的lua报错有显示 方法调用堆栈,类似 debug.traceback,可能我们有其他需求,要求对错误日志进行收集,然后上传到自己的日志平台,如 sentry
这就要求我们自定义一个错误处理的函数嵌入到lua的调用中
1. 在 Main.lua 中加入错误处理函数 __G__TRACKBACK__
function __G__TRACKBACK__(errorMessage) local msg = "----- Lua error begin -----\n" msg = msg.."Lua error: " .. tostring(errorMessage) .. "\n" msg = msg..debug.traceback("", 2) msg = msg.."----- Lua error end -----" Debugger.LogError(msg) -- errorHandle(errorMessage, msg) -- 日志处理,上传给sentryend
2. 修改LuaState.cs
public void PCall(int args, int oldTop) { int funcIndex = -(args + 1); //其实funcIndex就等价于oldTop反向索引 if (!LuaDLL.lua_isfunction(L, funcIndex)) { //如果堆栈中funcIndex不是待调用的 函数,则返回 return; } int traceback = 0; //自定义的错误追踪函数在Main.lua中, __G__TRACKBACK__ LuaDLL.lua_getglobal(L, "__G__TRACKBACK__"); if (!LuaDLL.lua_isfunction(L, -1)) { LuaDLL.lua_pop(L, 1); } else { traceback = funcIndex - 1; LuaDLL.lua_insert(L, traceback); //压入错误处理函数 __G__TRACKBACK__ } if (LuaDLL.lua_pcall(L, args, LuaDLL.LUA_MULTRET, traceback) != 0) { if (traceback != 0) { // 移除错误处理函数 __G__TRACKBACK__ 和 error message,其实不处理也行,反正最后 EndPCall 都会恢复栈顶 LuaDLL.lua_pop(L, 2); } else { string error = LuaDLL.lua_tostring(L, -1); Exception last = LuaException.luaStack; LuaException.luaStack = null; throw new LuaException(error, last); } } } public void EndPCall(int oldTop) { LuaDLL.lua_settop(L, oldTop - 1); }
3. 故意报错测试一下
0 0
- unity-luaFramewrok中lua错误信息的捕获
- Application_Error 中捕获错误信息
- 学习lua结合unity遇到错误信息的解决方法
- 捕获错误信息
- 探讨捕获php错误信息方法的详解
- lua错误信息
- 如何捕获错误信息
- 全局错误信息捕获
- Unity中另类的使用Lua的一种方式
- Unity中预览lua脚本
- Unity中预览lua脚本
- 【Lua】Unity中热更新的实现方式
- [Unity][LUA][SLUA]选择LUA库导入Unity中
- [Unity] Unity的lua项目中模拟每帧运行一次的协程
- vscode 配置unity的lua
- BADI 中错误信息的处理
- BADI 中错误信息的处理
- 人机交互中错误信息的显示
- 有缓冲文件操作的几个函数
- 2.1安装
- 关于编程严谨性-----------处理业务前状态判断
- 图像剪切
- 同步互斥——司机售票员问题
- unity-luaFramewrok中lua错误信息的捕获
- 微信支付-刷卡支付
- 简单的栈的实现
- 调优JVM内存,并解决OutOfMemoryError,StackOverflowError等异常问题
- 关于Renderscript的理解
- 运维管理(常用工具、知识整理)
- Docker在 Windows 上安装
- iOS UIWebview加载网页时的图片放大,缩小,保存到相册,文字的拷贝
- BasicExcel 对Excel 的操作使用