掌桥专利:专业的专利平台
掌桥专利
首页

基于字节码注入技术的程序调用链路监控实现方法及装置

文献发布时间:2023-06-19 09:24:30


基于字节码注入技术的程序调用链路监控实现方法及装置

技术领域

本申请属于程序监控技术领域,具体地讲,涉及一种基于字节码注入技术的程序调用链路监控实现方法及装置。

背景技术

传统的程序测试环境对于开发来说是纯黑盒环境,在分析测试提交的程序BUG时,只能依靠程序中记录的日志进行分析,日志缺失或者不规范时会导致问题排查比较困难,不能较好地定位到问题根源。

发明内容

本申请提供了一种基于字节码注入技术的程序调用链路监控实现方法及装置,以至少解决当前只能依靠程序中记录的日志分析排查程序出现的问题所带来的弊端。

根据本申请的一个方面,还提供了一种基于字节码注入技术的程序调用链路监控实现方法,包括:

在程序中选定需要注入动态字节码的埋点位置;

将用于监控程序调用链路的动态字节码注入埋点位置;

运行程序,并从埋点位置采集程序的实际运行信息,根据实际运行信息判断程序是否发生异常,实际运行信息包括:输入信息、输出信息、定位位置信息、堆栈异常信息。

在一实施例中,根据实际运行信息判断程序是否发生异常,包括:

将实际运行信息与预先存储的预期程序运行结果进行对比;

如果实际运行信息与预期程序运行结果不一致,则程序发生异常。

在一实施例中,程序调用链路监控实现方法还包括:

根据程序确定该程序运行后对应的预期程序运行结果,并将预期程序运行结果进行保存。

在一实施例中,程序调用链路监控实现方法还包括:

根据程序的类型配置对应的采集信息规则,动态字节码根据采集信息规则对程序的实际运行信息进行采集。

根据本申请的另一个方面,还提供了一种基于字节码注入技术的程序调用链路监控实现装置,包括:

埋点确定单元,用于在程序中选定需要注入动态字节码的埋点位置;

动态字节码注入单元,用于将用于监控程序调用链路的动态字节码注入埋点位置;

数据分析单元,用于运行程序,并从埋点位置采集程序的实际运行信息,根据实际运行信息判断程序是否发生异常,实际运行信息包括:输入信息、输出信息、定位位置信息、堆栈异常信息。

在一实施例中,数据分析单元包括:

对比模块,用于将实际运行信息与预先存储的预期程序运行结果进行对比;

判断异常模块,用于如果实际运行信息与预期程序运行结果不一致,则程序发生异常。

在一实施例中,程序调用链路监控实现装置还包括:

预期生成单元,用于根据程序确定该程序运行后对应的预期程序运行结果,并将预期程序运行结果进行保存。

在一实施例中,程序调用链路监控实现装置还包括:

信息采集规则配置单元,用于根据程序的类型配置对应的采集信息规则,动态字节码根据采集信息规则对程序的实际运行信息进行采集。

本申请利用字节码注入技术,在程序中的特定位置注入代码,再配合前端可视化的控制界面,能够实现快速精准定位问题的功能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的一种基于字节码注入技术的程序调用链路监控实现方法流程图。

图2为本申请实施例中根据实际运行信息判断程序是否发生异常的流程图。

图3为本申请提供的一种基于字节码注入技术的程序调用链路监控实现装置结构框图。

图4为本申请实施例中数据分析单元的结构框图。

图5为本申请实施例中提供的一种程序调用链路监控实现系统。

图6为本申请实施例中一种电子设备的具体实施方式。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

当前,在传统测试环境中分析程序bug,在日志不够完善、底层技术栈异常的情况下无法具体定位问题的根源,为了解决这个问题,本申请提供了一种基于字节码注入技术的程序调用链路监控实现方法,如图1所示,包括:

S101:在程序中选定需要注入动态字节码的埋点位置。

在一具体实施例中,在一段程序的一些节点插入动态字节码,被插入动态字节码的地方称之为埋点位置,这些被选中的节点通常是容易出现问题的节点。

S102:将用于监控程序调用链路的动态字节码注入埋点位置。

在一具体实施例中,注入的动态字节码依据埋点采集程序输入、输出、程序异常定位位置及异常堆栈信息等,然后依据定义将这些数据进行结构化处理与存储。

S103:运行程序,并从埋点位置采集程序的实际运行信息,根据实际运行信息判断程序是否发生异常。实际运行信息包括:输入信息、输出信息、定位位置信息、堆栈异常信息。

在一实施例中,根据实际运行信息判断程序是否发生异常,如图2所示,包括:

S201:将实际运行信息与预先存储的预期程序运行结果进行对比。

S202:如果实际运行信息与预期程序运行结果不一致,则程序发生异常。

在一具体实施例中,对注入的动态字节码采集到的实际运行信息进行过滤、接收并进行结构化处理后对实际运行信息进行分析,根据先前定义的颗粒度与原子性要求,明确定义程序输入参数数据及输出结果数据等信息,再与预期的程序运行结果进行匹配,预期的程序运行信息包括程序数据请求、预期数据返回结果、异常堆栈类型等。如果程序的实际运行信息与预期的程序运行结果不匹配,或者程序堆栈异常、交易超时等,可以对交易进行结论判断与分类,对程序的各种性能隐患问题做预判并展示给技术人员。

在一实施例中,程序调用链路监控实现方法还包括:

根据程序确定该程序运行后对应的预期程序运行结果,并将预期程序运行结果进行保存。

在一实施例中,程序调用链路监控实现方法还包括:

根据程序的类型配置对应的采集信息规则,动态字节码根据采集信息规则对程序的实际运行信息进行采集。

基于同一发明构思,本申请实施例还提供了一种基于字节码注入技术的程序调用链路监控实现装置,可以用于实现上述实施例中所描述的方法,如下面实施例所述。由于该基于字节码注入技术的程序调用链路监控实现装置解决问题的原理与基于字节码注入技术的程序调用链路监控实现方法相似,因此基于字节码注入技术的程序调用链路监控实现装置的实施可以参见基于字节码注入技术的程序调用链路监控实现方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

如图3所示,本申请提供了一种基于字节码注入技术的程序调用链路监控实现装置,包括:

埋点确定单元301,用于在程序中选定需要注入动态字节码的埋点位置;

动态字节码注入单元302,用于将用于监控程序调用链路的动态字节码注入埋点位置;

数据分析单元303,用于运行程序,并从埋点位置采集程序的实际运行信息,根据实际运行信息判断程序是否发生异常,实际运行信息包括:输入信息、输出信息、定位位置信息、堆栈异常信息。

在一实施例中,如图4所示,数据分析单元303包括:

对比模块401,用于将实际运行信息与预先存储的预期程序运行结果进行对比;

判断异常模块402,用于如果实际运行信息与预期程序运行结果不一致,则程序发生异常。

在一实施例中,程序调用链路监控实现装置还包括:

预期生成单元,用于根据程序确定该程序运行后对应的预期程序运行结果,并将预期程序运行结果进行保存。

在一实施例中,程序调用链路监控实现装置还包括:

信息采集规则配置单元,用于根据程序的类型配置对应的采集信息规则,动态字节码根据采集信息规则对程序的实际运行信息进行采集。

在一具体实施例中,本申请提供了一套基于字节码注入技术的程序调用链路监控实现系统,该系统如图5所示,包括参数设置模块1、信息采集模块2、数据分析模块3和结果处理模块4。其中,信息采集模块2分别与参数设置模块1与数据分析模块3相连接;数据分析模块3分别与信息采集模块2与结果处理模块4相连接;数据监测中心6通过调用结果处理模块4与被埋点部署的程序代码5完成信息交互。

参数设置模块1:主要包括程序模型定义单元、交易定义规则模型单元。问题定义规则模型单元主要定义采集交易颗粒度、原子性,交易开始和结束时间的范围要求。程序模型定义单元主要是程序定义类型,比如是串行过程性、多线程并发性等。

信息采集模块2:主要包括信息埋点单元、信息采集单元、信息接收单元、信息存储单元。信息埋点单元主要是对操作控件作虚拟请求便以采集单元获取信息,信息采集单元主要依据埋点采集程序输入、输出、程序异常定位位置、及异常堆栈异常信息等;信息接收单元负责将信息发送给后台;信息存储单元依据定义将数据进行结构化处理与存储。

数据分析模块3:主要包括是模型解析单元,按照模型定义、参数定义解析与问题定位所需基本信息进行解析,根据颗粒度与原子性定义要求,明确定义程序输入参数数据,及输出结果数据等信息,再与模型设定维度进行匹配,模型包括程序数据请求、预期数据返回结果、异常堆栈类型等得到解析后的结果。

结果处理模块4:主要包括结果信息存储单元、结果信息推送单元。结果信息存储单元按程序单元进行存储。结果信息推送单元按照用户要求返回特定结果内容。

本申请利用字节码注入技术,在运行程序特定位置中注入代码配合前端可视化的控制界面,快速精准定位问题并友好地展示出来。技术上通过动态字节码特定位置埋点、事件采集、采集信息存储及分析等实现图形化展示与消息推送。通过埋点采集信息、信息存储分析、及页面加工展示等与测试定位问题息息相关的关键性信息以及请求级的数据信息,不仅能够获取到更贴近测试所需要的问题分析结果数据,也能够更加精准的定位问题根源,实现问题自动化监测展示与分析,摆脱人工机械的分析方式。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种电子设备的具体实施方式,参见图6,所述电子设备具体包括如下内容:

处理器(processor)601、内存602、通信接口(Communications Interface)603、总线604和非易失性存储器605;

其中,所述处理器601、内存602、通信接口603通过所述总线604完成相互间的通信;

所述处理器601用于调用所述内存602和非易失性存储器605中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

S101:在程序中选定需要注入动态字节码的埋点位置。

S102:将用于监控程序调用链路的动态字节码注入埋点位置。

S103:运行程序,并从埋点位置采集程序的实际运行信息,根据实际运行信息判断程序是否发生异常。

本申请的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:

S101:在程序中选定需要注入动态字节码的埋点位置。

S102:将用于监控程序调用链路的动态字节码注入埋点位置。

S103:运行程序,并从埋点位置采集程序的实际运行信息,根据实际运行信息判断程序是否发生异常。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。

在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。

相关技术
  • 基于字节码注入技术的程序调用链路监控实现方法及装置
  • 用于报告基于通过至少两种不同接入技术实现的通信链路的蜂窝通信的无线链路失败(RLF)的方法、设备和计算机程序
技术分类

06120112152982