本申请涉及大数据,尤其涉及一种代码调试逻辑的展示方法、装置、设备、介质及程序产品。
背景技术:
1、程序设计语言通常可以根据其编程范式和用途分为不同的类别,如强调通过过程(函数或子程序)来组织代码的面向过程语言,如c语言;强调通过对象和类来组织代码的面向对象语言,如java;以及其他专业性语言,如超文本标记语言(hypertext markuplanguage,简称html)等。在面向过程的程序设计中,基于高内聚低耦合的原则,一般将程序中依赖紧凑的函数放在相同的程序文件中,在程序调试过程中,程序的调用跳转在大多数时候会以人类所习惯的方式发生。然而,在面向对象程序设计中,尤其是引用了过度封装的框架类型的代码,由于代码层次划分过细,通常一个类会存在5-10级的继承层次。这就导致同一类的代码调用会频繁的在不同的基类和继承类间跳转,导致代码的可读性较差,进而导致在进行与代码相关的问题排查时存在困难。
2、相关技术中,通过追踪代码调试过程进行与代码相关的问题排查。但目前的代码调试主要依赖于调用栈的代码层级结构和基于文件的代码展示形式,这样在一些场景中,存在问题排查效率较低的问题。
技术实现思路
1、本申请提供一种代码调试逻辑的展示方法、装置、设备、介质及程序产品,用以解决现有技术中代码调试依赖于调用栈的代码层级结构和基于文件的代码展示形式时,在追踪代码调试过程进行与代码相关的问题排查效率较低的问题。
2、第一方面,本申请提供一种代码调试逻辑的展示方法,包括:获取目标应用程序的请求入口方法,该请求入口方法为代码调试过程中已记录发生错误的请求入口方法;根据请求入口方法,在执行目标应用程序的代码调试操作过程中,基于目标应用程序中的跟踪组件,采集并记录代码调试过程中的调用栈链路,该调用栈链路中包括至少一个调用栈;根据调用栈链路,得到调用方法内容链;根据调用方法内容链,得到代码调试逻辑对应的代码展示图。
3、在一种可能的设计中,根据调用栈链路,得到调用方法内容链,包括:针对调用栈链路中包含的每一调用栈,从目标应用程序的源代码文件中,确定与调用栈对应的调用方法的源代码;基于代码分析技术组件,对源代码进行预处理,得到调用方法对应的方法结构化对象,该预处理包括词法解析处理、语法解析处理以及结构化处理;基于调用栈链路,根据方法结构化对象,得到调用方法内容链。
4、在一种可能的设计中,根据调用方法内容链,得到代码调试逻辑对应的代码展示图,包括:基于图形展示技术,对调用方法内容链进行调用链图形化展示处理,得到代码展示图。
5、在一种可能的设计中,目标应用程序中的跟踪组件是通过以下方式得到的:在目标应用程序启动前,在目标应用程序对应的字节码增强组件的加载模式下,加载字节码增强组件;基于字节码增强组件,在目标应用程序中添加埋点字节码,并将埋点字节码作为跟踪组件。
6、在一种可能的设计中,目标应用程序的源代码文件是通过以下方式得到的:基于数据采集组件,采集目标应用程序的字节码文件;基于反编译技术,对字节码文件进行反编译处理,得到源代码文件。
7、在一种可能的设计中,代码展示图包括多个调用方法节点,每一调用方法节点包括主体结构和关系结构;主体结构包括方法声明行和方法内容段落,方法声明行包括类型信息和方法声明信息,类型信息包括运行时类型和方法声明类型;关系结构包括调用方法之间的调用关系。
8、在一种可能的设计中,代码展示图还包括类型链信息、实例属性信息以及代码段信息。
9、第二方面,本申请提供一种代码调试逻辑的展示装置,包括:获取模块,用于获取目标应用程序的请求入口方法,该请求入口方法为代码调试过程中已记录发生错误的请求入口方法;采集模块,用于根据请求入口方法,在执行目标应用程序的代码调试操作过程中,基于目标应用程序中的跟踪组件,采集并记录代码调试过程中的调用栈链路,该调用栈链路中包括至少一个调用栈;第一处理模块,用于根据调用栈链路,得到调用方法内容链;第二处理模块,用于根据调用方法内容链,得到代码调试逻辑对应的代码展示图。
10、在一种可能的设计中,第一处理模块具体用于:针对调用栈链路中包含的每一调用栈,从目标应用程序的源代码文件中,确定与调用栈对应的调用方法的源代码;基于代码分析技术组件,对源代码进行预处理,得到调用方法对应的方法结构化对象,该预处理包括词法解析处理、语法解析处理以及结构化处理;基于调用栈链路,根据方法结构化对象,得到调用方法内容链。
11、在一种可能的设计中,第二处理模块具体用于:基于图形展示技术,对调用方法内容链进行调用链图形化展示处理,得到代码展示图。
12、在一种可能的设计中,目标应用程序中的跟踪组件是通过以下方式得到的:在目标应用程序启动前,在目标应用程序对应的字节码增强组件的加载模式下,加载字节码增强组件;基于字节码增强组件,在目标应用程序中添加埋点字节码,并将埋点字节码作为跟踪组件。
13、在一种可能的设计中,目标应用程序的源代码文件是通过以下方式得到的:基于数据采集组件,采集目标应用程序的字节码文件;基于反编译技术,对字节码文件进行反编译处理,得到源代码文件。
14、在一种可能的设计中,代码展示图包括多个调用方法节点,每一调用方法节点包括主体结构和关系结构;主体结构包括方法声明行和方法内容段落,方法声明行包括类型信息和方法声明信息,类型信息包括运行时类型和方法声明类型;关系结构包括调用方法之间的调用关系。
15、在一种可能的设计中,代码展示图还包括类型链信息、实例属性信息以及代码段信息。
16、第三方面,本申请实施例提供一种电子设备,包括:至少一个处理器和存储器;存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上第一方面以及第一方面各种可能的设计的代码调试逻辑的展示方法。
17、第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计的代码调试逻辑的展示方法。
18、第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计的代码调试逻辑的展示方法。
19、本申请提供的代码调试逻辑的展示方法、装置、设备、介质及程序产品,通过获取目标应用程序的代码调试过程中已记录发生错误的请求入口方法,根据该请求入口方法,在执行目标应用程序的代码调试操作过程中,基于目标应用程序中的跟踪组件,采集并记录代码调试过程中的至少一个调用栈的调用栈链路,并根据调用栈链路,得到调用方法内容链,进一步根据调用方法内容链,得到代码调试逻辑对应的代码展示图,基于该代码展示图可以直观地进行与代码相关的问题排查,提高问题排查效率。
1.一种代码调试逻辑的展示方法,其特征在于,包括:
2.根据权利要求1所述的展示方法,其特征在于,所述根据所述调用栈链路,得到调用方法内容链,包括:
3.根据权利要求1所述的展示方法,其特征在于,所述根据所述调用方法内容链,得到所述代码调试逻辑对应的代码展示图,包括:
4.根据权利要求1至3中任一项所述的展示方法,其特征在于,所述目标应用程序中的跟踪组件是通过以下方式得到的:
5.根据权利要求1至3中任一项所述的展示方法,其特征在于,所述目标应用程序的源代码文件是通过以下方式得到的:
6.根据权利要求1至3中任一项所述的展示方法,其特征在于,所述代码展示图包括多个调用方法节点,每一所述调用方法节点包括主体结构和关系结构;
7.根据权利要求1至3中任一项所述的展示方法,其特征在于,所述代码展示图还包括类型链信息、实例属性信息以及代码段信息。
8.一种代码调试逻辑的展示装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7中任一项所述的方法。
11.一种计算机程序产品,其特征在于,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-7中任一项所述的方法。
