2013年4月13日

摘要: 一般在用c写的lua函数里,检测到某些参数或前置条件错误时,会用luaL_error来报错,这时脚本层如果是xpcall,其错误处理函数就会被调用,在其中可用debug.traceback()来打印记录错误栈,这是脚本错误调试的常用做法。 但是在c++环境中使用lua时,却有一个细微而致命的bug:lua通常是按c语言方式编译,因此luaL_error最终会调用longjump来实现跨函数远程跳转,而这种跳转不会遵循c++关于stack unwinding的规范,其最直接的影响就是局部变量的析构函数不会被调用。 如果使用的是官方版lua,那么可以用c++方式编译lua来解决。但是如果用... 阅读全文
posted @ 2013-04-13 19:02 冷欺花 阅读(1837) 评论(0) 推荐(0) 编辑

导航