• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

cocos2d lua debug.traceback

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

[string "scenes/game/home/MapView.lua"]:0: table index is nil
stack traceback:
[string "scenes/game/home/MapView.lua"]: in function 'onEnter'
[string "framework/cocos2dx/NodeEx.lua"]: in function <[string "framework/cocos2dx/NodeEx.lua"]:0>
[C]: in function 'addChild'
[string "scenes/game/Game.lua"]: in function '__navigateTo'
[string "scenes/game/Game.lua"]: in function 'navigateBack'
[string "scenes/game/daily/Activeness.lua"]: in function <[string "scenes/game/daily/Activeness.lua"]:0>

 

以上我们看到一段脚本报错信息

cocos/lua开发模式中,分析错误信息是十分必要的

在引擎框架下脚本运行时错误会自动打印这样的信息

其实这些信息并不是"凭空"或者"自动"产生的

下面就分析一下lua脚本错误信息的产生和收集

转载请注明本文地址http://www.cnblogs.com/billyrun/articles/6257470.html

 

 

1.The Debug Library

debug是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,即从顶层返回错误信息

越上层越接近错误发生的位置,应该是更加重要的


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用eclipse并加上python,lua,go,perl插件; 在eclipse LDT(Ko ...发布时间:2022-07-22
下一篇:
lua中self的用法发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap