捕获lua代码异常的方法和装置制造方法及图纸

技术编号:19634909 阅读:32 留言:0更新日期:2018-12-01 15:39
本发明专利技术公开捕获lua代码异常的方法和装置,方法包括:设置每次调用lua代码时均通过异常处理函数来调用lua代码;获取异常处理函数的返回值并将异常处理函数的返回值压入lua堆栈,其中,异常处理函数的返回值至少包括lua代码是否异常,以及lua代码正常时的返回值或lua代码异常时的错误信息;若lua代码异常,则反向调用应用语言函数以将lua堆栈中的错误信息传递给应用语言函数。本申请实施例提供的方案可以使得开发人员,不管是在app开发的过程中,还是在app已经正式发布使用之后,都能够在第一时间获取到lua层的出错信息,能够及时定位到非常小概率的错误场景,及时修复。

Methods and devices for capturing Lua code exceptions

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堆栈中的错误信息传递给所述java函数。第二方面,本专利技术实施例提供一种捕获lua代码异常的装置,包括:设置模块,配置为设置每次调用lua代码时均通过异常处理函数来调用所述lua代码;返回值处理模块,配置为获取异常处理函数的返回值并将所述异常处理函数的返回值压入lua堆栈中,其中,所述异常处理函数的返回值至少包括所述lua代码是否异常,以及所述lua代码正常时的返回值或所述lua代码异常时的错误信息;以及传递模块,配置为若所述lua代码异常,则反向调用java函数以将所述lua堆栈中的错误信息传递给所述java函数。第三方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本专利技术任一实施例的捕获lua代码异常的方法的步骤。第四方面,本专利技术实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行本专利技术任一实施例的捕获lua代码异常的方法的步骤。本申请的方法和装置提供的方案通过使用异常处理函数调用lua代码,之后再将异常传递给应用语言函数,可以使得即使lua代码出错崩溃,异常处理函数也不会崩溃,而是将错误信息,放在lua堆栈上,传递出去。从而可以使得开发人员,不管是在app开发的过程中,还是在app已经正式发布使用之后,都能够在第一时间获取到lua层的出错信息,能够及时定位到非常小概率的错误场景,及时修复。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术一实施例提供的一种捕获lua代码异常的方法的流程图;图2为本专利技术一实施例提供的另一种捕获lua代码异常的方法的流程图;图3为本专利技术一实施例提供的又一种捕获lua代码异常的方法的流程图;图4为本专利技术一实施例提供的一种捕获lua代码异常的方法的异常捕获流程示意图;图5为本专利技术一实施例提供的一种捕获lua代码异常的装置的框图;图6是本专利技术一实施例提供的电子设备的结构示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。下面,先介绍本申请的实施方式,之后将用实验数据证实本申请的方案与现有技术相比有什么不同,能实现什么有益效果。请参考图1,其示出了本申请的捕获lua代码异常的方法一实施例的流程图,本实施例的捕获lua代码异常的方法可以适用于包含有lua代码的APP(应用程序)中。如图1所示,在步骤101中,设置每次调用lua代码时均通过异常处理函数来调用lua代码;之后,在步骤102中,获取异常处理函数的返回值并将异常处理函数的返回值压入lua堆栈;最后,在步骤103中,若lua代码异常,则反向调用应用语言函数以将lua堆栈中的错误信息传递给应用语言函数。在本实施例中,对于步骤101,捕获lua异常的装置首先对lua代码使用异常处理函数进行一下包装,使得每次调用lua代码时都通过异常处理函数来调用。在一些可选的实施例中,异常处理函数包括lua_pcall和lua_xpcall。之后,对于步骤102,其中,捕获lua异常的装置获取异常处理函数的返回值并将该返回值压入lua堆栈中,异常处理函数的返回值至少包括lua代码是否异常,例如true或false,或者true或nil,以及lua代码正常时的返回值或lua代码异常时的错误信息。在进一步的实施例中,还可以包括错误信息的额外信息或者扩展信息,例如对错误信息的说明信息等。最后,对于步骤103,若根据lua堆栈中的返回值得出代码异常,则反向调用应用语言函数以将lua堆栈中的错误信息传递给应用语言函数。其中,语言函数可以是java函数、C/C++函数或者Python函数等用于编写APP的函数从而将错误从底层传递到应用层。本实施例的方法通过使用异常处理函数调用lua代码,之后再将异常传递给应用语言函数,可以使得即使lua代码出错崩溃,异常处理函数也不会崩溃,而是将错误信息,放在lua堆栈上,传递出去。从而可以使得开发人员,不管是在app开发的过程中,还是在app已经正式发布使用之后,都能够在第一时间获取到lua层的出错信息,能够及时定位到非常小概率的错误场景,及时修复。进一步参考图2,其示出了本申请的另一种捕获lua代码异常的方法的流程图。如图2所示,在步骤201中,将应用语言函数捕获的错误信息向上层抛出;在步骤202中,在上层捕获应用语言函数抛出的错误信息并上传。在本实施例中,对于步骤201,捕获lua代码异常的装置将该应用语言函数收到的由lua堆栈传递的lua代码的错误信息向上层抛出。之后,在步骤202中,在上层捕获该应用语言函数抛出的错误信息并上传给APP的服务器,从而服务器能够实时得知lua的异常。进一步参考图3,其示出了本申请的又一种捕获lua代码异常的方法的流程图。该流程主要是针对图1中的步骤101的细化步骤。如图3所示,在步骤301中,将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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1