The invention discloses methods and devices for capturing Lua code exceptions, including: setting up an exception handling function to call Lua code every time the Lua code is invoked; obtaining the return value of the exception handling function and pushing the return value of the exception handling function into the Lua stack, in which the return value of the exception handling function includes at least the Lua generation. Whether the code is abnormal or not, and the return value when the Lua code is normal or the error information when the Lua code is abnormal; if the Lua code is abnormal, the application language function is invoked in reverse to transfer the error information in the Lua stack to the application language function. The scheme provided by the embodiment of this application can enable developers, whether in the process of app development or after the app has been officially released and used, to obtain the error information of lua layer at the first time, locate the very small probability of error scenarios in time, and repair them in time.
【技术实现步骤摘要】
捕获lua代码异常的方法和装置
本专利技术属于异常捕获
,尤其涉及捕获lua代码异常的方法和装置。
技术介绍
相关技术中,lua语言本身使用的场景不多,在android中使用lua的应用也非常少,目前还没有一种比较通用的能够在android中捕获lua异常的方法。目前的lua开发,都是在开发阶段打印日志到终端,然后定位bug,版本正式发布之后,很难有手段能够追踪到app在实际运行过程中出现的问题。目前大多数的lua开发调试,都是需要开发环境的配合,移动终端在运行的时候,连接到开发机,实时抓取日志。这种方法在开发阶段是有效的,但是有些bug需要在特定的场景下才会触发,产品出货之后,遇到这类问题,无法抓取日志,就没法定位了。专利技术人在实现本申请的过程中发现:导致这个问题的关键是,app在实际运行过程中,出错或者崩溃时,app很难抓取到有效日志信息,抓取到这些日志信息之后,开发、测试人员也需要通过一些手段来获取到这些信息,才能进行下一步的定位,解决问题。
技术实现思路
本专利技术实施例提供一种捕获lua代码异常的方法和装置,用于至少解决上述技术问题之一。第一方面,本专利技术实施例提供一种捕获lua代码异常的方法,包括:设置每次调用lua代码时均通过异常处理函数来调用所述lua代码;获取异常处理函数的返回值并将所述异常处理函数的返回值压入lua堆栈中,其中,所述异常处理函数的返回值至少包括所述lua代码是否异常,以及所述lua代码正常时的返回值或所述lua代码异常时的错误信息;以及若所述lua代码异常,则反向调用java函数以将所述lua堆栈中的错误信息传递给 ...
【技术保护点】
1.一种捕获lua代码异常的方法,包括:设置每次调用lua代码时均通过异常处理函数来调用所述lua代码;获取所述异常处理函数的返回值并将所述异常处理函数的返回值压入lua堆栈,其中,所述异常处理函数的返回值至少包括所述lua代码是否异常,以及所述lua代码正常时的返回值或所述lua代码异常时的错误信息;若所述lua代码异常,则反向调用应用语言函数以将所述lua堆栈中的错误信息传递给所述应用语言函数。
【技术特征摘要】
1.一种捕获lua代码异常的方法,包括:设置每次调用lua代码时均通过异常处理函数来调用所述lua代码;获取所述异常处理函数的返回值并将所述异常处理函数的返回值压入lua堆栈,其中,所述异常处理函数的返回值至少包括所述lua代码是否异常,以及所述lua代码正常时的返回值或所述lua代码异常时的错误信息;若所述lua代码异常,则反向调用应用语言函数以将所述lua堆栈中的错误信息传递给所述应用语言函数。2.根据权利要求1所述的方法,还包括:将所述应用语言函数捕获的所述错误信息向上层抛出;在所述上层捕获所述应用语言函数抛出的所述错误信息并上传。3.根据权利要求1所述的方法,其中,所述设置每次需要调用lua代码时均通过异常处理函数来调用所述lua代码包括:将lua代码封装在预设函数中;将调用lua代码修改为通过异常处理函数来调用所述预设函数。4.根据权利要求1-3中任一项所述的方法,其中,所述异常处理函数包括lua_pcall和lua_xpcall。5.根据权利要求4所述的方法,其中,所述应用语言函数包括C/C++函数、Java函数和Python函数。6.一种捕获lua代码异常的装置,包括:设置模块,配置为设置每次调用lua代码时均通过异常处理函数来调用...
【专利技术属性】
技术研发人员:陈洪新,刘洪彬,
申请(专利权)人:苏州思必驰信息科技有限公司,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。