Tencent / xLua

xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc.
Other
9.4k stars 2.45k forks source link

报错日志不再显示具体的某某代码某某行了,error in error handling #824

Open Declanctz opened 4 years ago

Declanctz commented 4 years ago

类似如下的报错代码 local tt = nil assert(tt ~= nil, "xxxx")

报错抛异常不再显示具体某某脚本某某类了,转而只显示LuaException: error in error handling XLua.LuaEnv.ThrowExceptionFromError (Int32 oldTop) (at Assets/XLua/Src/LuaEnv.cs:445)了

这是为啥?

chexiongsheng commented 4 years ago

我本地工程有行号有栈,你搞了啥呢?

Declanctz commented 4 years ago

111png 之前都能正常显示的,也没做什么额外的操作,就是shell批处理了下脚本,做了些写入操作。然后脚本格式都是utf-8 的,写入的东西都去除了。还是报红看不到具体代码具体行,xlua的public object[] DoString(byte[] chunk, string chunkName = "chunk", LuaTable env = null)这类的源码API都没有改动过

Declanctz commented 4 years ago

哦哦,好像找到原因了,是声明了一些全局的非wrap过的变量CS.xxx.xxx,其中的xxx.xxx没有wrap,而是走的反射的机制,然后就影响普通脚本的逻辑报错时的debug具体定位信息的显示了。注释掉反射获取的CS.xxx.xxx就可以正常显示报红的某某代码某某行了,这很奇怪,是xlua对反射的支持会影响到报错debug具体定位吗。 2222

chexiongsheng commented 4 years ago

反射也不会影响啊