在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
[string "scenes/game/home/MapView.lua"]:0: table index is nil
以上我们看到一段脚本报错信息 cocos/lua开发模式中,分析错误信息是十分必要的 在引擎框架下脚本运行时错误会自动打印这样的信息 其实这些信息并不是"凭空"或者"自动"产生的 下面就分析一下lua脚本错误信息的产生和收集 转载请注明本文地址http://www.cnblogs.com/billyrun/articles/6257470.html
1.The Debug Librarydebug是lua自带的库函数(类似) 包含脚本运行错误产生的信息 debug.getInfo/debug.traceback可以逐条/全部返回错误发生处的堆栈信息 以上打印的信息就是通过debug.traceback获取的 cocos2d-x-3.5\cocos\scripting\lua-bindings\script\init.lua 文件中定义了一个全局函数
debug.traceback(msg , 3)会返回第3层and3层以下的栈信息,并把msg拼接在了最前面 比如我从一个匿名函数开始,调用f1,f1中调用f2,f2中调用f3,f3再调用f4 f4中写一个错误的语句a=aa.aaa 错误的信息是attemp to index global aa(a nil value) 它会被拼接在最前面 堆栈信息大概是这样的 但是注意,debug.traceback(msg , 3)这里的参数3表示返回从第三层开始的信息 也就是说 in function __index in function f4 这两条是不会被打印的 cocos这样做有点让我不理解 debug.traceback(msg , level)level可以不传,默认是1,即从顶层返回错误信息 越上层越接近错误发生的位置,应该是更加重要的 |
请发表评论