异常捕获方法、异常接收方法、装置、介质及设备
技术领域
本公开涉及计算机
技术领域
,具体而言,涉及一种针对解释型语言的异常捕获方法、针对解释型语言的异常接收方法、针对解释型语言的异常捕获装置、计算机可读介质及电子设备。背景技术
编译型语言(如,C/C++),是需要通过编译器将源代码编译成机器码之后才能执行的语言,一般需要经过编译(compile)、链接(linker)这两个步骤,编译是将源代码编译成机器码,链接是将各个模块的机器码和依赖库串连起来生成可执行文件。解释型语言(如,Python/JavaScript/Perl),是需要将源代码先翻译成中间代码,再由解释器将中间代码解释为可以在硬件上运行的编程语言。
在编译型语言和解释型语言混合开发的框架(如,Electrion+Javascript、Python+Qt)下,通常会通过安装崩溃捕获钩子的方式即时保存程序发生崩溃时的转储文件以供分析。但是,在编译型语言和解释型语言混合开发的框架下,有一些错误代码在编译型语言中会引发程序崩溃,而在解释型语言中却不会引发程序崩溃,只会自动跳出当前的执行环境继续运行。因而,针对基于编译型语言和解释型语言构建的程序,注入的崩溃捕获钩子无法捕获这类异常。但是,这类异常容易导致多语言混合开发的框架下的程序的不稳定性。
需要说明的是,在上述
背景技术
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开实施例的目的在于提供一种针对解释型语言的异常捕获方法、针对解释型语言的异常接收方法、针对解释型语言的异常捕获装置、计算机可读介质及电子设备,可以提升基于编译型语言和解释型语言构建的程序的稳定性。
本公开实施例的第一方面提供了一种针对解释型语言的异常捕获方法,该方法应用于基于解释型语言和编译型语言构建的程序,该方法包括:
在解释型语言中注入第一钩子函数;其中,第一钩子函数用于捕获解释型语言的异常信息;
触发程序运行并实时对解释型语言进行异常监控;
当检测到解释型语言出现异常时,调用第一钩子函数获取异常信息;
将异常信息上传至服务器,以使得服务器汇总单位时间内的异常信息并展示汇总结果。
在本公开的一种示例性实施例中,触发程序运行之前,上述方法还包括:
在编译型语言中注入第二钩子函数;其中,第二钩子函数用于捕获程序崩溃信息。
在本公开的一种示例性实施例中,异常信息包括异常码、异常描述、堆栈信息、用户账号、机器信息、程序版本中至少一种。
在本公开的一种示例性实施例中,实时对解释型语言进行异常监控,包括:
实时监控解释型语言的运行状态,当检测到运行状态为预设异常状态中任一异常状态,则判定检测到解释型语言出现异常。
在本公开的一种示例性实施例中,服务器汇总单位时间内的异常信息并展示汇总结果,包括:
服务器将异常信息解析为结构化数据;
服务器确定异常信息对应的时间戳所属的单位时间;
服务器汇总单位时间内的所有结构化数据,得到汇总结果并展示。
在本公开的一种示例性实施例中,服务器汇总单位时间内的异常信息并展示汇总结果之后,上述方法还包括:
服务器根据汇总结果更新异常查询网站对应的数据库;其中,异常查询网站用于提供基于日期、程序版本、异常类型中至少一种维度的异常信息查询功能。
根据本公开实施例的第二方面,提供一种针对解释型语言的异常接收方法,包括:
接收客户端上传的异常信息;其中,异常信息为客户端基于第一钩子函数获取到的,第一钩子函数用于捕获解释型语言的异常信息;
汇总单位时间内接收到的所有异常信息,得到汇总结果;
展示汇总结果。
根据本公开实施例的第三方面,提供一种针对解释型语言的异常接收装置,其特征在于,包括:
异常信息接收单元,用于接收客户端上传的异常信息;其中,异常信息为客户端基于第一钩子函数获取到的,第一钩子函数用于捕获解释型语言的异常信息;
信息汇总单元,用于汇总单位时间内接收到的所有异常信息,得到汇总结果;
信息展示单元,用于展示汇总结果。
根据本公开实施例的第四方面,提供一种针对解释型语言的异常捕获装置,该装置用于运行基于解释型语言和编译型语言构建的程序,该装置包括:
函数注入单元,用于在解释型语言中注入第一钩子函数;其中,第一钩子函数用于捕获解释型语言的异常信息;
异常监控单元,用于触发程序运行并实时对解释型语言进行异常监控;
异常信息获取单元,用于当检测到解释型语言出现异常时,调用第一钩子函数获取异常信息;
异常信息上报单元,用于将异常信息上传至服务器,以使得服务器汇总单位时间内的异常信息并展示汇总结果。
在本公开的一种示例性实施例中,函数注入单元,还用于异常监控单元触发程序运行之前,在编译型语言中注入第二钩子函数;其中,第二钩子函数用于捕获程序崩溃信息。
在本公开的一种示例性实施例中,异常信息包括异常码、异常描述、堆栈信息、用户账号、机器信息、程序版本中至少一种。
在本公开的一种示例性实施例中,异常监控单元实时对解释型语言进行异常监控,包括:
实时监控解释型语言的运行状态,当检测到运行状态为预设异常状态中任一异常状态,则判定检测到解释型语言出现异常。
在本公开的一种示例性实施例中,服务器汇总单位时间内的异常信息并展示汇总结果,包括:
服务器将异常信息解析为结构化数据;
服务器确定异常信息对应的时间戳所属的单位时间;
服务器汇总单位时间内的所有结构化数据,得到汇总结果并展示。
在本公开的一种示例性实施例中,服务器汇总单位时间内的异常信息并展示汇总结果之后,上述装置还包括:
服务器根据汇总结果更新异常查询网站对应的数据库;其中,异常查询网站用于提供基于日期、程序版本、异常类型中至少一种维度的异常信息查询功能。
根据本公开实施例的第五方面,提供了一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现如上述实施例中第一方面的针对解释型语言的异常捕获方法。
根据本公开实施例的第六方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现如上述实施例中第一方面的针对解释型语言的异常捕获方法。
根据本申请的第七方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的各种可选实现方式中提供的方法。
本公开实施例提供的技术方案可以包括以下有益效果:
在本公开的一些实施例所提供的技术方案,该技术方案应用于基于解释型语言和编译型语言构建的程序,具体包括:在解释型语言中注入第一钩子函数;其中,第一钩子函数用于捕获解释型语言的异常信息;触发程序运行并实时对解释型语言进行异常监控;当检测到解释型语言出现异常时,调用第一钩子函数获取异常信息;将异常信息上传至服务器,以使得服务器汇总单位时间内的异常信息并展示汇总结果。实施本公开的实施例,一方面,可以通过在程序中注入专门针对解释型语言的异常捕获函数,以更为全面的覆盖对于程序的异常捕获,从而提升基于编译型语言和解释型语言构建的程序的稳定性。另一方面,可以基于对异常信息的及时上传,可以方便服务器对异常信息进行汇总,以便用户基于汇总的结果进行有针对性地程序优化。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示意性示出了可以应用本公开实施例的一种针对解释型语言的异常捕获方法及针对解释型语言的异常捕获装置的示例性系统架构的示意图;
图2示意性示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;
图3示意性示出了根据本公开的一个实施例的针对解释型语言的异常捕获方法的流程图;
图4示意性示出了根据本公开的一个实施例的异常信息获取流程示意图;
图5示意性示出了根据本公开的一个实施例的异常信息汇总流程示意图;
图6示意性示出了根据本公开的一个实施例的针对解释型语言的异常捕获方法的流程图;
图7示意性示出了根据本公开的一个实施例的针对解释型语言的异常接收方法的流程图;
图8示意性示出了根据本公开的一个实施例中的针对解释型语言的异常接收装置的结构框图;
图9示意性示出了根据本公开的一个实施例中的针对解释型语言的异常捕获装置的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1示意性示出了可以应用本公开实施例的一种针对解释型语言的异常捕获方法及针对解释型语言的异常捕获装置的示例性系统架构的示意图。
如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。其中,服务器105用于执行:在解释型语言中注入第一钩子函数;其中,第一钩子函数用于捕获解释型语言的异常信息;触发程序运行并实时对解释型语言进行异常监控;当检测到解释型语言出现异常时,调用第一钩子函数获取异常信息;将异常信息上传至服务器,以使得服务器汇总单位时间内的异常信息并展示汇总结果。
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从储存部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在(RAM)203中,还存储有系统操作所需的各种程序和数据。(CPU)201、(ROM)202以及(RAM)203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至(I/O)接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的储存部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至(I/O)接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入储存部分208。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(CPU)201执行时,执行本申请的方法和装置中限定的各种功能。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中的方法。例如,的电子设备可以实现如图3所示的各个步骤等。
本示例实施方式提供了一种针对解释型语言的异常捕获方法,参考图3所示,该方法应用于基于解释型语言和编译型语言构建的程序,该针对解释型语言的异常捕获方法可以包括以下步骤S310至步骤S340,具体地:
步骤S310:在解释型语言中注入第一钩子函数;其中,第一钩子函数用于捕获解释型语言的异常信息。
步骤S320:触发程序运行并实时对解释型语言进行异常监控。
步骤S330:当检测到解释型语言出现异常时,调用第一钩子函数获取异常信息。
步骤S340:将异常信息上传至服务器,以使得服务器汇总单位时间内的异常信息并展示汇总结果。
实施图3所示的针对解释型语言的异常捕获方法,可以通过在程序中注入专门针对解释型语言的异常捕获函数,以更为全面的覆盖对于程序的异常捕获,从而提升基于编译型语言和解释型语言构建的程序的稳定性。此外,可以基于对异常信息的及时上传,可以方便服务器对异常信息进行汇总,以便用户基于汇总的结果进行有针对性地程序优化。
下面,对于本示例实施方式的上述步骤进行更加详细的说明。
在步骤S310中,在解释型语言中注入第一钩子函数;其中,第一钩子函数用于捕获解释型语言的异常信息。
具体地,第一钩子函数(exception_handler)和第二钩子函数均是Windows消息处理机制的一部分,通过设置“钩子”,程序可以在系统级对所有消息、事件进行过滤,访问一些在正常情况下无法访问的消息。其中,在解释型语言中注入第一钩子函数,包括:在程序的解释型语言层次上安装第一钩子函数。
可选的,在实际应用中,可以在基于解释型语言和编译型语言构建的程序中注入一个或多个钩子函数,本申请实施例不作限定。
作为一种可选的实施例,触发程序运行之前,上述方法还包括:在编译型语言中注入第二钩子函数;其中,第二钩子函数用于捕获程序崩溃信息。
具体地,在编译型语言中注入第二钩子函数,包括:在程序的编译型语言层次上安装第二钩子函数。
可见,实施该可选的实施例,能够通过不同的钩子函数监控不同的程序问题(如,程序崩溃、程序异常),可以提升对于程序问题的检测的全面性。
在步骤S320中,触发程序运行并实时对解释型语言进行异常监控。
具体地,实时对解释型语言进行异常监控,包括:实时对程序中通过解释型语言表达的代码进行异常监控。
作为一种可选的实施例,实时对解释型语言进行异常监控,包括:实时监控解释型语言的运行状态,当检测到运行状态为预设异常状态中任一异常状态,则判定检测到解释型语言出现异常。
具体地,运行状态用于描述解释型语言的解析运行位置、循环次数等,预设异常状态的数量可以为一个或多个,本申请实施例不作限定。
可见,实施该可选的实施例,能够基于运行状态在客户端程序中捕获解释型语言层次上的异常信息,能够提升对于程序问题的覆盖的全面性。
在步骤S330中,当检测到解释型语言出现异常时,调用第一钩子函数获取异常信息。
具体地,异常信息用于从多个维度描述本次出现的异常,异常信息可以包括异常码、异常描述、堆栈信息、用户账号、机器信息、程序版本中至少一种。其中,机器信息可以包括操作系统、ip地址等,堆栈信息可以包括堆栈列表,每层堆栈对应的源代码文件名/行号/函数名用于辅助定位到出错的代码位置,一般地,堆栈信息依据解释型语言的不同对应于不同的结构和信息。
其中,堆栈是一个特定的存储区或寄存器,一端固定,另一端浮动。堆栈基于先进后出的原则存取,位于堆栈中间的元素,须在其栈上部诸元素逐个移出后才能取出。在内存储器中开辟一个区域作为堆栈的称为软件堆栈,用寄存器构成的堆栈称为硬件堆栈。在算术表达式求值的过程中,需要使用堆栈来保存表达式的中间值和运算符,堆栈使得表达式的中间运算过程的结果访问具有了一定的自动管理能力。大部分编译型程序设计语言具有程序递归特性,递归能够增强语言的表达能力和降低程序设计难度。递归程序的递归深度通常是不确定的,需要将子程序执行的返回地址保存到堆栈这种先进后出式的结构中,以保证子程序的返回地址的正确使用顺序。函数式程序设计语言中,不同子函数的参数的种类和个数是不相同的,编译器也是使用堆栈来存储子程序的参数。具体地,栈存放于一级缓存,被调用时处于存储空间中,调用完毕立即释放。堆则存放于二级缓存中,生命周期与虚拟机的垃圾回收算法相关。
请参阅图4,图4示意性示出了根据本公开的一个实施例的异常信息获取流程示意图。如图4所示,异常信息获取流程可以包括:
步骤S410:当检测到解释型语言出现异常时,客户端调用第一钩子函数获取异常码、异常描述、堆栈信息。
步骤S420:客户端调用第一钩子函数获取用户账号、机器信息、程序版本。
步骤S430:客户端将异常码、异常描述、堆栈信息、用户账号、机器信息、程序版本封装为数据包。其中,封装的数据包可以为json/xml格式
步骤S440:客户端将数据包上传服务器。
在步骤S340中,将异常信息上传至服务器,以使得服务器汇总单位时间内的异常信息并展示汇总结果。
具体地,在将异常信息上传至服务器之后,服务器可以将异常信息作为转储(Dump)文件保存。其中,Dump文件是进程的内存镜像,可以将程序的执行状态通过调试器保存至Dump文件中,在C++编程实践中,通常都会遇到内存访问无效、无效对象、堆栈溢出、空指针调用等导致系统崩溃的C/C++问题,Dump文件可以用于提供给驱动程序编写人员以便编写人员据此调试驱动程序,规避导致系统崩溃的C/C++问题,Dump文件一般可以通过软件工具WinDbg或VS打开。
请参阅图5,图5示意性示出了根据本公开的一个实施例的异常信息汇总流程示意图。如图5所示,常信息汇总流程可以包括:
步骤S510:服务器基于预设接口接收包含异常信息的数据包。其中,预设接口可以基于tcp协议或http协议
步骤S520:服务器存储异常信息。其中,异常信息的存储类型可以为Dump。
步骤S530:服务器定时分析、汇总异常信息。
步骤S540:服务器提供异常查询网站。
作为一种可选的实施例,服务器汇总单位时间内的异常信息并展示汇总结果,包括:服务器将异常信息解析为结构化数据;服务器确定异常信息对应的时间戳所属的单位时间;服务器汇总单位时间内的所有结构化数据,得到汇总结果并展示。
具体地,结构化数据可以由二维表结构进行逻辑表达,可以通过关系型数据库进行存储和管理。
可选的,上述方法还可以包括:服务器依据各异常信息的存储时间戳定期清除存储的异常信息,以保留预设时长(如,7天或者15天)内的异常信息,这样可以节约磁盘空间,减少对于数据库的占用。
可选的,上述方法还可以包括:服务器执行预设的定时任务,每隔固定时间(如,30分钟或1小时)对单位时间(如,1个月)内的异常信息进行分析。具体包括:提取单位时间内的异常信息的异常码、异常描述、堆栈信息、用户账号、机器信息、程序版本中至少一种,并据此并生成结构化的异常信息列表。
可见,实施该可选的实施例,能够便于相关人员根据展示的汇总结果及时优化程序。
作为一种可选的实施例,服务器汇总单位时间内的异常信息并展示汇总结果之后,上述方法还包括:服务器根据汇总结果更新异常查询网站对应的数据库;其中,异常查询网站用于提供基于日期、程序版本、异常类型中至少一种维度的异常信息查询功能。
具体地,对于日期维度的选择,可以实现过滤和查看指定某个时间段的异常日志,对于程序版本的选择,可以实现查看当前版本的程序的异常上报个数,对应于相同异常码和相同堆栈信息的异常信息可以确定为同一异常类型的异常信息,对于异常类型的选择,可以实现基于异常数量由高到低排序的异常信息的展示,这样可以方便用户根据直观地了解到异常频次由高到低的异常类型。
可选的,服务器根据汇总结果更新异常查询网站对应的数据库之后,上述方法还可以包括:客户端接收针对日期、程序版本以及异常类型中至少一种维度的选取操作,根据选取结果筛选出命中的异常信息,并进行展示。进而,可选的,还可以包括:将筛选出的命中的异常信息的相关汇总结果进行展示。
可见,实施该可选的实施例,能够提升针对异常信息的查询便捷性,方便用户随时根据需求查询相关的异常信息。
请参阅图6,图6示意性示出了根据本公开的一个实施例的针对解释型语言的异常捕获方法的流程图。如图6所示,针对解释型语言的异常捕获方法可以包括:步骤S610~步骤S670。
步骤S610:客户端在解释型语言中注入第一钩子函数;其中,第一钩子函数用于捕获解释型语言的异常信息。
步骤S620:客户端在编译型语言中注入第二钩子函数;其中,第二钩子函数用于捕获程序崩溃信息。
步骤S630:客户端触发程序运行并实时监控解释型语言的运行状态,当检测到运行状态为预设异常状态中任一异常状态,则判定检测到解释型语言出现异常。
步骤S640:当检测到解释型语言出现异常时,客户端调用第一钩子函数获取异常信息,异常信息包括异常码、异常描述、堆栈信息、用户账号、机器信息、程序版本中至少一种。
步骤S650:客户端将异常信息上传至服务器。
步骤S660:服务器将异常信息解析为结构化数据;服务器确定异常信息对应的时间戳所属的单位时间;服务器汇总单位时间内的所有结构化数据,得到汇总结果并展示。
步骤S670:服务器根据汇总结果更新异常查询网站对应的数据库;其中,异常查询网站用于提供基于日期、程序版本、异常类型中至少一种维度的异常信息查询功能。
需要说明的是,步骤S610~步骤S670与图3所示的各步骤及其实施例相对应,针对步骤S610~步骤S670的具体实施方式,请参阅图3所示的各步骤及其实施例,此处不再赘述。
可见,实施图6所示的针对解释型语言的异常捕获方法,可以通过在程序中注入专门针对解释型语言的异常捕获函数,以更为全面的覆盖对于程序的异常捕获,从而提升基于编译型语言和解释型语言构建的程序的稳定性。此外,可以基于对异常信息的及时上传,可以方便服务器对异常信息进行汇总,以便用户基于汇总的结果进行有针对性地程序优化。
请参阅图7,图7示意性示出了根据本公开的一个实施例的针对解释型语言的异常接收方法的流程图。如图7所示,该针对解释型语言的异常接收方法包括如下步骤。
步骤S710:接收客户端上传的异常信息;其中,异常信息为客户端基于第一钩子函数获取到的,第一钩子函数用于捕获解释型语言的异常信息。
步骤S720:汇总单位时间内接收到的所有异常信息,得到汇总结果。
步骤S730:展示汇总结果。
实施图7所示的方法,可以通过在程序中注入专门针对解释型语言的异常捕获函数,以更为全面的覆盖对于程序的异常捕获,从而提升基于编译型语言和解释型语言构建的程序的稳定性。此外,可以基于对异常信息的及时上传,可以方便服务器对异常信息进行汇总,以便用户基于汇总的结果进行有针对性地程序优化。
请参阅图8,图8示意性示出了根据本公开的一个实施例中的针对解释型语言的异常接收装置的结构框图。如图8所示,该针对解释型语言的异常接收装置800包括如下单元。
异常信息接收单元801,用于接收客户端上传的异常信息;其中,异常信息为客户端基于第一钩子函数获取到的,第一钩子函数用于捕获解释型语言的异常信息;
信息汇总单元802,用于汇总单位时间内接收到的所有异常信息,得到汇总结果;
信息展示单元803,用于展示汇总结果。
实施图8所示的装置,可以通过在程序中注入专门针对解释型语言的异常捕获函数,以更为全面的覆盖对于程序的异常捕获,从而提升基于编译型语言和解释型语言构建的程序的稳定性。此外,可以基于对异常信息的及时上传,可以方便服务器对异常信息进行汇总,以便用户基于汇总的结果进行有针对性地程序优化。
进一步的,本示例实施方式中,还提供了一种针对解释型语言的异常捕获装置,该装置用于运行基于解释型语言和编译型语言构建的程序,参考图9所示,该针对解释型语言的异常捕获装置900,可以包括:
函数注入单元901,用于在解释型语言中注入第一钩子函数;其中,第一钩子函数用于捕获解释型语言的异常信息;
异常监控单元902,用于触发程序运行并实时对解释型语言进行异常监控;
异常信息获取单元903,用于当检测到解释型语言出现异常时,调用第一钩子函数获取异常信息;
异常信息上报单元904,用于将异常信息上传至服务器,以使得服务器汇总单位时间内的异常信息并展示汇总结果。
其中,异常信息包括异常码、异常描述、堆栈信息、用户账号、机器信息、程序版本中至少一种。
可见,实施图9所示的装置,可以通过在程序中注入专门针对解释型语言的异常捕获函数,以更为全面的覆盖对于程序的异常捕获,从而提升基于编译型语言和解释型语言构建的程序的稳定性。此外,可以基于对异常信息的及时上传,可以方便服务器对异常信息进行汇总,以便用户基于汇总的结果进行有针对性地程序优化。
在本公开的一种示例性实施例中,函数注入单元901,还用于异常监控单元触发程序运行之前,在编译型语言中注入第二钩子函数;其中,第二钩子函数用于捕获程序崩溃信息。
可见,实施该可选的实施例,能够通过不同的钩子函数监控不同的程序问题(如,程序崩溃、程序异常),可以提升对于程序问题的检测的全面性。
在本公开的一种示例性实施例中,异常监控单元902实时对解释型语言进行异常监控,包括:
实时监控解释型语言的运行状态,当检测到运行状态为预设异常状态中任一异常状态,则判定检测到解释型语言出现异常。
可见,实施该可选的实施例,能够基于运行状态在客户端程序中捕获解释型语言层次上的异常信息,能够提升对于程序问题的覆盖的全面性。
在本公开的一种示例性实施例中,服务器汇总单位时间内的异常信息并展示汇总结果,包括:
服务器将异常信息解析为结构化数据;
服务器确定异常信息对应的时间戳所属的单位时间;
服务器汇总单位时间内的所有结构化数据,得到汇总结果并展示。
可见,实施该可选的实施例,能够便于相关人员根据展示的汇总结果及时优化程序。
在本公开的一种示例性实施例中,服务器汇总单位时间内的异常信息并展示汇总结果之后,上述装置还包括:
服务器根据汇总结果更新异常查询网站对应的数据库;其中,异常查询网站用于提供基于日期、程序版本、异常类型中至少一种维度的异常信息查询功能。
可见,实施该可选的实施例,能够提升针对异常信息的查询便捷性,方便用户随时根据需求查询相关的异常信息。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
由于本公开的示例实施例的针对解释型语言的异常捕获装置的各个功能模块与上述针对解释型语言的异常捕获方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的针对解释型语言的异常捕获方法的实施例。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:计算机预警监测电路及其监测方法