一种异常信息上报方法、装置、计算机设备和存储介质与流程

文档序号:28595928发布日期:2022-01-22 10:22阅读:75来源:国知局
一种异常信息上报方法、装置、计算机设备和存储介质与流程

1.本公开涉及异常日志信息处理技术领域,具体而言,涉及一种异常信息上报方法、装置、计算机设备和存储介质。


背景技术:

2.在跨端系统中开发的程序往往可以支持在多套系统中使用,例如,可以在android系统和ios系统中使用,但不同的系统对应于不同的代码引擎,因此,为了保证跨端系统中开发的程序可以在多套系统中稳定使用,跨端系统需要对应于多种代码运行引擎。
3.而代码运行引擎在运行程序对应的前端代码的过程中,不可避免的将出现运行出错的问题,针对该问题,往往需要生成异常日志信息并发送给服务端,以使服务端基于异常日志信息,确定运行出错的前端代码对应的源代码的位置并对该位置的源代码进行代码维护。
4.但现有技术中,针对跨端系统对应的多代码运行引擎运行出错、产生的异常日志信息进行上报的问题,未存在合理的解决方案,从而导致服务端无法准确地确定异常代码的位置,影响了代码维护的效率。


技术实现要素:

5.本公开实施例至少提供一种异常信息上报方法、装置、计算机设备和存储介质。
6.第一方面,本公开实施例提供了一种异常信息上报方法,包括:
7.在前端代码运行过程中,确定运行出错的异常前端代码的行列位置信息;
8.基于所述异常前端代码的行列位置信息,生成所述异常前端代码对应的异常栈轨迹信息;所述异常栈轨迹信息中包含所述异常前端代码的行列位置信息;
9.将所述异常栈轨迹信息转化为符合预设格式的结构化数据,并将所述结构化数据上传至目标监控系统;
10.其中,所述结构化数据用于所述目标监控系统结合目标信息文件,确定发生异常的源代码的行列位置信息;所述目标信息文件中存储有所述源代码与所述前端代码之间的行列位置转换关系。
11.在一种可能的实施方式中,所述将所述异常栈轨迹信息转化为符合预设格式的结构化数据,包括:
12.确定所述前端代码对应的代码运行引擎的引擎格式;
13.基于所述引擎格式与所述预设格式之间的转换关系,将所述异常栈轨迹信息转化为所述预设格式的结构化数据。
14.在一种可能的实施方式中,在前端代码运行过程中,确定运行出错的异常前端代码的行列位置信息之前,所述方法还包括:
15.获取待转化的源代码;
16.将所述源代码转化为所述代码运行引擎对应的目标代码,并确定所述源代码和所
述目标代码之间的行列位置转换关系;
17.对所述目标代码进行压缩处理,得到所述前端代码。
18.在一种可能的实施方式中,根据以下步骤生成所述目标信息文件:
19.基于所述源代码和所述目标代码之间的行列位置转换关系,确定所述源代码与所述前端代码之间的行列位置转换关系;
20.基于确定的所述源代码与所述前端代码之间的行列位置转换关系,生成所述目标信息文件。
21.在一种可能的实施方式中,所述方法还包括:
22.将生成的所述目标信息文件发送给服务端。
23.第二方面,本公开实施例提供了一种异常信息上报方法,包括:
24.获取客户端发送的符合预设格式的结构化数据;所述结构化数据用于指示所述客户端在前端代码运行过程中,运行出错的异常前端代码的行列位置信息;
25.根据所述结构化数据和预先获取的目标信息文件,确定所述客户端运行出错的异常前端代码对应的源代码的行列位置信息;
26.其中,所述目标信息文件中存储有所述源代码与所述前端代码之间的行列位置转换关系。
27.在一种可能实施方式中,根据以下步骤获取所述目标信息文件:
28.接收所述客户端发送的所述目标信息文件。
29.在一种可能的实施方式中,确定所述客户端运行出错的异常前端代码对应的源代码的行列位置信息之后,还包括:
30.基于确定的所述源代码的行列位置信息,从所述源代码中获取目标源代码;
31.基于所述目标源代码,生成异常提示信息并反馈给开发端。
32.第三方面,本公开实施例还提供一种异常信息上报装置,包括:
33.第一确定模块,用于在前端代码运行过程中,确定运行出错的异常前端代码的行列位置信息;
34.第一生成模块,用于基于所述异常前端代码的行列位置信息,生成所述异常前端代码对应的异常栈轨迹信息;所述异常栈轨迹信息中包含所述异常前端代码的行列位置信息;
35.第一发送模块,用于将所述异常栈轨迹信息转化为符合预设格式的结构化数据,并将所述结构化数据上传至目标监控系统;
36.其中,所述结构化数据用于所述目标监控系统结合目标信息文件,确定发生异常的源代码的行列位置信息;所述目标信息文件中存储有所述源代码与所述前端代码之间的行列位置转换关系。
37.在一种可能的实施方式中,所述第一发送模块,用于确定所述前端代码对应的代码运行引擎的引擎格式;
38.基于所述引擎格式与所述预设格式之间的转换关系,将所述异常栈轨迹信息转化为所述预设格式的结构化数据。
39.在一种可能的实施方式中,所述装置还包括:
40.转换模块,用于在前端代码运行过程中,确定运行出错的异常前端代码的行列位
置信息之前,获取待转化的源代码;
41.将所述源代码转化为所述代码运行引擎对应的目标代码,并确定所述源代码和所述目标代码之间的行列位置转换关系;
42.对所述目标代码进行压缩处理,得到所述前端代码。
43.在一种可能的实施方式中,所述装置还包括:
44.第二生成模块,用于按照以下步骤生成所述目标信息文件:
45.基于所述源代码和所述目标代码之间的行列位置转换关系,确定所述源代码与所述前端代码之间的行列位置转换关系;
46.基于确定的所述源代码与所述前端代码之间的行列位置转换关系,生成所述目标信息文件。
47.在一种可能的实施方式中,所述装置还包括:
48.第二发送模块,用于将生成的所述目标信息文件发送给服务端。
49.第四方面,本公开实施例还提供一种异常信息上报装置,包括:
50.获取模块,用于获取客户端发送的符合预设格式的结构化数据;所述结构化数据用于指示所述客户端在前端代码运行过程中,运行出错的异常前端代码的行列位置信息;
51.第二确定模块,用于根据所述结构化数据和预先获取的目标信息文件,确定所述客户端运行出错的异常前端代码对应的源代码的行列位置信息;
52.其中,所述目标信息文件中存储有所述源代码与所述前端代码之间的行列位置转换关系。
53.在一种可能的实施方式中,所述装置还包括:
54.接收模块,用于按照以下步骤获取所述目标信息文件:
55.接收所述客户端发送的所述目标信息文件。
56.在一种可能的实施方式中,所述装置还包括:
57.提示模块,用于确定所述客户端运行出错的异常前端代码对应的源代码的行列位置信息之后,基于确定的所述源代码的行列位置信息,从所述源代码中获取目标源代码;
58.基于所述目标源代码,生成异常提示信息并反馈给开发端。
59.第五方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤;或者,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤。
60.第六方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤;或者,该计算机程序被运行时执行上述第二方面,或第二方面中任一种可能的实施方式中的步骤。
61.关于上述异常信息上报装置、计算机设备、及计算机可读存储介质的效果描述参见上述异常信息上报方法的说明,这里不再赘述。
62.本公开实施例提供的异常信息上报方法、装置、计算机设备和存储介质,基于确定
的异常前端代码的行列位置信息,生成异常栈轨迹信息,能够实现基于异常栈轨迹信息对异常前端代码的定位。另外,异常栈轨迹信息可以由前端代码对应的代码运行引擎生成;由于不同的代码运行引擎对应的异常栈轨迹信息的信息格式不同,而目标监控系统需要对符合预设格式的数据才能处理,所以通过将异常栈轨迹信息转化为符合预设格式的结构化数据,能够实现对异常栈轨迹信息的标准化处理,便于后续目标监控系统结合目标信息文件对结构化数据进行处理,以确定异常前端代码对应的源代码。如此,本公开实施例可以有效解决跨端系统对应的多代码运行引擎运行出错的问题,实现准确确定出各种代码运行引擎所运行出错的异常前端代码对应的源代码,进而可以实现对运行出错的异常前端代码对应的源代码的代码维护,提高了代码维护效率。
63.进一步的,本公开实施例提供的异常信息上报方法、装置、计算机设备和存储介质,还可以在服务端接收到取客户端发送的符合预设格式的结构化数据之后,基于目标信息文件中存储的源代码与前端代码之间的行列位置转换关系,将结构化数据指示的异常前端代码的行列位置信息转换为目标源代码的行列位置信息,从而实现准确地确定出异常前端代码对应的目标源代码。
64.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
65.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
66.图1示出了本公开实施例所提供的一种异常信息上报方法的流程图;
67.图2示出了本公开实施例所提供的一种应用于服务端的异常信息上报方法的流程图;
68.图3示出了本公开实施例所提供的一种进行异常监控的完整流程图;
69.图4示出了本公开实施例所提供的一种异常信息上报装置的示意图;
70.图5示出了本公开实施例所提供的另一种异常信息上报装置的示意图;
71.图6示出了本公开实施例所提供的一种计算机设备结构示意图。
具体实施方式
72.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
73.另外,本公开实施例中的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
74.在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
75.经研究发现,在跨端系统中开发的程序往往可以支持在多套系统中使用,例如,可以在android系统和ios系统中使用,但不同的系统对应于不同的代码引擎,因此,为了保证跨端系统中开发的程序可以在多套系统中稳定使用,跨端系统需要对应于多种代码运行引擎。
76.而代码运行引擎在运行程序对应的前端代码的过程中,不可避免的将出现运行出错的问题,针对该问题,往往需要生成异常日志信息并发送给服务端,以使服务端基于异常日志信息,确定运行出错的前端代码对应的源代码的位置并对该位置的源代码进行代码维护。
77.但现有技术中,针对跨端系统对应的多代码运行引擎运行出错、产生的异常日志信息进行上报的问题,未存在合理的解决方案,从而导致服务端无法准确地确定异常代码的位置,影响了代码维护的效率。
78.基于上述研究,本公开提供了一种异常信息上报方法、装置、计算机设备和存储介质,基于确定的异常前端代码的行列位置信息,生成异常栈轨迹信息,能够实现基于异常栈轨迹信息对异常前端代码的定位。另外,异常栈轨迹信息可以由前端代码对应的代码运行引擎生成;由于不同的代码运行引擎对应的异常栈轨迹信息的信息格式不同,而目标监控系统需要对符合预设格式的数据才能处理,所以通过将异常栈轨迹信息转化为符合预设格式的结构化数据,能够实现对异常栈轨迹信息的标准化处理,便于后续目标监控系统结合目标信息文件对结构化数据进行处理,以确定异常前端代码对应的源代码。如此,本公开实施例可以有效解决跨端系统对应的多代码运行引擎运行出错的问题,实现准确确定出各种代码运行引擎所运行出错的异常前端代码对应的源代码,进而可以实现对运行出错的异常前端代码对应的源代码的代码维护,提高了代码维护效率。
79.针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
80.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
81.需要说明的是,本公开实施例中所提到的特定名词包括:
82.stacktrace:堆栈轨迹,用于指示代码在某个时间对应的调用堆栈状态;
83.apm:application performance monitor,应用性能监控,用于帮助理解跨端系统行为、分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题;
84.dsl:domain-specific language,领域特定语言,指的是专注于某个应用程序领域的计算机语言;
85.source map:是一个信息文件,里面储存着转换后的代码的每一个位置,所对应的转换前的位置;
86.react:一种前端web开发框架;
87.vue:一种前端web开发框架;
88.小程序:一种前端web开发框架。
89.为便于对本实施例进行理解,首先对本公开实施例所公开的一种异常信息上报方法进行详细介绍,本公开实施例所提供的异常信息上报方法的执行主体一般为具有一定计算能力的计算机设备,在一些可能的实现方式中,该异常信息上报方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
90.下面以执行主体为客户端为例对本公开实施例提供的异常信息上报方法加以说明。
91.如图1所示,为本公开实施例提供的一种异常信息上报方法的流程图,可以包括以下步骤:
92.s101:在前端代码运行过程中,确定运行出错的异常前端代码的行列位置信息。
93.这里,前端代码可以为基于开发人员在跨端系统对应的开发端开发的源代码转换得到的,跨端系统是一种用于开发代码的系统,在跨端系统中开发的代码可以支持在在多套系统中使用,如可以在android系统和ios系统中使用。
94.不同的系统中对应于不同的代码运行引擎,代码运行引擎用于运行前端代码。具体的,代码运行引擎可以为javascript(以下简称js)引擎,开发的前端代码可以为基于js语法规范的代码。
95.不同的前端代码可以对应于不同的业务需求,例如,在业务需求为开发一个网页的情况下,该前端代码可以为需要开发的网页对应的代码;在业务需求为开发一个应用程序的情况下,该前端代码可以为需要开发的应用程序对应的代码。
96.前端代码可以包括多行多列的代码,行列位置信息能够指示前端代码中的各个代码在前端代码中的行列位置。
97.具体实施时,前端代码可以运行在客户端中,客户端可以为基于android系统开发的客户端,其中对应的代码运行引擎可以为android系统对应的js引擎;或者,客户端也可以为基于ios系统开发的客户端,其中对应的代码运行引擎可以为ios系统对应的js引擎。
98.在利用部署在客户端的js引擎运行前端代码的过程中,如果前端代码中的某个位置的代码运行出错,js引擎可以确定出运行出错的异常前端代码在前端代码中的对应的行列位置信息,具体的,确定的行列位置信息可以为行列号,例如,3行5列,10行30列等等。
99.在一种实施方式中,前端代码中的各个代码之间存在一定的关联性,在运行前端代码的过程中,可能出现同时有多个位置的代码运行出错,也即,存在多个异常前端代码,这样,js引擎可以同时确定出多个异常前端代码中的每个异常前端代码对应的行列位置信息。
100.s102:基于异常前端代码的行列位置信息,生成异常前端代码对应的异常栈轨迹信息;异常栈轨迹信息中包含异常前端代码的行列位置信息。
101.这里,前端代码中包括的代码可以对应于多种不同的函数,不同函数对应的代码在运行时,需要调用不同的堆栈空间,不同的堆栈空间对应于不同的堆栈位置。
102.异常栈轨迹信息中包含异常前端代码的行列位置信息,是代码运行引擎基于行列位置信息生成的,能够表征异常前端代码对应的堆栈位置和异常前端代码对应的行列位置信息。具体的,异常栈轨迹信息可以为包含异常前端代码的行列位置信息的stacktrace信息。
103.具体实施时,在确定出异常前端代码的行列位置信息之后,客户端对应的js引擎,可以基于异常前端代码的行列位置信息,生成包含异常前端代码的行列位置信息的stacktrace信息。
104.在一种实施方式中,在异常前端代码包括多个的情况下,可以将基于多个异常前端代码分别对应的行列位置信息,生成一个由组成多个异常前端代码分别对应的行列位置信息组成的错误堆栈,进而,可以利用客户端对应的js引擎,根据错误堆栈中的各个行列位置信息,生成异常栈轨迹信息;其中,该异常栈轨迹信息中包括多个异常前端代码分别对应的行列位置信息。
105.s103:将异常栈轨迹信息转化为符合预设格式的结构化数据,并将结构化数据上传至目标监控系统;其中,结构化数据用于目标监控系统结合目标信息文件,确定发生异常的源代码的行列位置信息;目标信息文件中存储有源代码与前端代码之间的行列位置转换关系。
106.这里,目标监控系统为用于确定运行出错的前端异常代码对应的源代码的系统,可以部署在服务端。预设格式为目标监控系统能够解析处理的数据格式。具体实施时,目标监控系统可以为apm系统。
107.结构化数据为将异常栈轨迹信息的信息格式转换为预设格式之后得到的数据。
108.目标文件信息中存储有预先确定的源代码与前端代码之间的行列位置转换关系。源代码为前端代码对应的、未经过压缩和打包处理的代码,也即,在对源代码进行打包和压缩处理之后,可以得到前端代码。源代码中也包括多行多列的代码,行列位置转换关系用于表征前端代码中的行列位置和源代码中的行列位置之间的映射关系,在基于源代码生成前端代码的过程中确定。目标文件信息为基于源代码与前端代码之间的行列位置转换关系预先生成并发送至目标监控系统对应的服务端的文件信息。
109.具体实施时,由于不同的客户端对应的代码运行引擎不同,其生成的异常栈轨迹信息的信息格式不同,且为目标监控系统不支持的信息格式,因此,需要将异常栈轨迹信息转化为目标监控系统能够支持的预设格式,也即,将异常栈轨迹信息转化为符合预设格式的结构化数据。
110.这里,将异常栈轨迹信息转化为符合预设格式的结构化数据的步骤可以是部署在客户端中的异常监控系统执行的;异常监控系统为一种用于收集客户端对应的异常日志信息的系统,其中,客户端对应的异常日志信息可以为异常前端代码对应的异常栈轨迹信息。异常监控系统在获取到客户段对应的js引擎产生的异常栈轨迹信息之后,可以将其转化为符合预设格式的结构化数据。
111.进一步的,可以将结构化数据上传至目标监控系统,以便于后续目标监控系统结合目标信息文件中存储的行列位置转换关系,将结构化数据对应的异常前端代码对应的行列位置信息转换为源代码对应的行列位置信息,并将该行列位置信息对应的源代码确认为发生异常的目标源代码。
112.这样,基于确定的异常前端代码的行列位置信息,生成异常栈轨迹信息,能够实现基于异常栈轨迹信息对异常前端代码的定位,异常栈轨迹信息可以由前端代码对应的代码运行引擎生成,由于不同的代码运行引擎对应的异常栈轨迹信息的信息格式不同,而目标监控系统需要对符合预设格式的数据才能处理,所以通过将异常栈轨迹信息转化为符合预设格式的结构化数据,能够实现对异常栈轨迹信息的标准化处理,便于后续目标监控系统结合目标信息文件对结构化数据进行处理,以确定异常前端代码对应的源代码,如此,本公开实施例可以有效解决跨端系统对应的多代码运行引擎运行出错的问题,实现准确确定出各种代码运行引擎所运行出错的异常前端代码对应的源代码,进而可以实现对运行出错的异常前端代码对应的源代码的代码维护,提高了代码维护效率。
113.在一种实施例中,针对s103中将异常栈轨迹信息转化为符合预设格式的结构化数据的步骤,可以按照以下步骤实施:
114.s103-1:确定前端代码对应的代码运行引擎的引擎格式。
115.这里,引擎格式用于表征运行前端代码的代码运行引擎的格式,具体的,引擎格式可以包括android系统对应的格式和ios系统对应的格式,一种格式的代码运行引擎生成的异常栈轨迹信息的信息格式是一定的,例如android系统对应的格式的代码运行引擎生成的异常栈轨迹信息的信息格式均为a格式;ios系统对应的格式的代码运行引擎生成的异常栈轨迹信息的信息格式均为b格式。
116.以部署在客户端中的异常监控系统执行确定结构化数据的步骤为例进行说明,具体实施时,在获取到异常栈轨迹信息之后,异常监控系统可以直接确定生成该异常栈轨迹信息的代码运行引擎的引擎格式,或者,可以对异常栈轨迹信息进行解析,确定出异常栈轨迹信息对应的引擎格式信息,将该引擎格式信息对应的引擎格式作为前端代码对应的代码运行引擎的引擎格式。
117.或者,引擎格式还可以用于表征异常栈轨迹信息的信息格式,不同的代码运行引擎生成的异常栈轨迹信息的信息格式不同。具体实施时,异常监控系统可以对异常栈轨迹信息进行解析,基于解析结果确定能够表征异常栈轨迹信息的信息格式的引擎格式。
118.s103-2:基于引擎格式与预设格式之间的转换关系,将异常栈轨迹信息转化为预设格式的结构化数据。
119.这里,预设格式可以为目标监控系统能够解析处理的数据格式,引擎格式与预设格式之间的转换关系可以为预先确定并存储的,不同引擎格式与预设格式之间的转换关系不同。
120.具体实施时,在引擎格式用于表征运行前端代码的代码运行引擎的格式的情况下,预先存储的转换关系为不同的代码运行引擎的格式和预设格式之间的转换关系。具体的,异常监控系统可以根据存储的不同的代码运行引擎的格式和预设格式之间的转换关系,确定当前获取的引擎格式对应的代码运行引擎的格式和预设格式之间的转换关系,进而,可以基于该转换关系对异常栈轨迹信息进行转换,得到预设格式的结构化数据。
121.或者,在引擎格式用于表征异常栈轨迹信息的信息格式的情况下,异常监控系统可以根据存储的不同异常栈轨迹信息的信息格式和预设格式之间的转换关系,确定当前获取的异常栈轨迹信息的信息格式与预设格式之间的转换关系,然后基于确定的该转换关系,对异常栈轨迹信息进行转换,得到预设格式的结构化数据。
122.这样,能够实现将异常栈轨迹信息转化为目标监控系统可以解析的结构化数据。
123.在一种实施例中,在前端代码运行过程中,确定运行出错的异常前端代码的行列位置信息之前,还包括确定前端代码的步骤:
124.步骤一:获取待转化的源代码。
125.这里,待转化的源代码为可以前端代码对应的代码,前端代码可以基于对待转化的源代码的转化得到,待转化的源代码由程序开发人员开发根据业务需求开发得到,其对应的代码数据量较大,所包括的代码较多。例如。源代码可以包括几百个、甚至成千上万个代码。
126.示例性的,待转换的源代码可以是基于react对应的前端web开发框架、vue对应的前端web开发框架或小程序对应的前端web开发框架,对dsl进行转换得到的代码。其中,对dsl进行转换得到的源代码中也可以包括dsl和源代码对应的sourcemap文件。
127.步骤二、将源代码转化为代码运行引擎对应的目标代码,并确定源代码和目标代码之间的行列位置转换关系。
128.这里,源代码和目标代码之间的行列位置转换关系能够表征源代码的代码位置和目标代码的代码位置之间的映射关系。目标代码为代码运行引擎所能运行的代码,相对于源代码而言,目标代码对应的语法版本低于源代码对应的语法版本。目标代码可以为跨端系统对应的各种代码运行引擎均能运行的代码。具体的,行列位置转换关系可以为源代码和目标代码之间的sourcemap文件。
129.在具体实施时,可以确定待转化的源代码对应的第一语法版本,以及跨端系统对应的各种代码运行引擎均能运行的代码对应的第二语法版本,之后,可以对第一语法版本的、待转化的源代码进行编译,得到第二语法版本的目标代码。并且,针对得到的目标代码中的各个代码,可以从源代码中确定出与目标代码中的该代码相匹配的源代码,之后,可以基于目标代码中的该代码在目标代码中的代码位置,以及该与目标代码中的该代码相匹配的源代码早源代码中的位置,确定目标代码中的该代码与其相匹配的源代码之间的位置转换关系,进而,可以将确定的目标代码中个各个代码与其相匹配的源代码之间的位置转换关系,作为源代码和目标代码之间的行列位置转换关系。具体的,可以直接基于确定的目标代码中个各个代码与其相匹配的源代码之间的位置转换关系,生成sourcemap文件。
130.步骤三、对目标代码进行压缩处理,得到前端代码。
131.这里,由于源代码包括的代码数量较多,对应的代码数据量也较大,所以转换得到的目标代码包括的代码数量也较多,对应的代码数据量也较大。
132.因此,为了方便客户端获取目标代码,可以对目标代码进行打包处理和压缩处理,得到目标代码对应的前端代码,相对于目标代码而言,前端代码对应的代码数据量更小,且为打包了的代码。
133.其中,打包处理为了实现将目标代码进行集中,便于后续的压缩,压缩处理可以减小源代码对应的代码数据量。
134.在一种实施例中,本公开实施还提供了生成目标信息文件的步骤,具体的,可以按照以下步骤实施:
135.p1:基于源代码和目标代码之间的行列位置转换关系,确定源代码与前端代码之间的行列位置转换关系。
136.这里,在对目标代码进行打包和压缩处理的过程中,还可以确定目标代码和生成的前端代码之间的行列位置转换关系,且在具体实施时,目标代码和生成的前端代码之间的行列位置转换关系也可以为sourcemap文件。
137.本步骤中,在确定源代码和目标代码之间的行列位置转换关系,和目标代码和生成的前端代码之间的行列位置转换关系之后,可以对两个行列位置转换关系进行合并,将合并后的两个位置转换关系作为源代码与前端代码之间的行列位置转换关系。
138.或者,可以基于源代码和目标代码之间的行列位置转换关系中所表征的目标代码的代码位置,与目标代码和生成的前端代码之间的行列位置转换关系中所表征的目标代码的代码位置进行匹配,确定两个行列位置转换关系中的每个行列位置转换关系中、能够表征相同的目标代码的代码位置的行列位置转换关系,也即确定每个目标代码的代码位置在两个行列位置转换关系分别对应的部分,之后,可以针对每个对应的部分,可以分别确定在源代码和目标代码之间的行列位置转换关系中,该部分对应的源代码,以及确定在目标代码和生成的前端代码之间的行列位置转换关系,该部分对应的前端代码,进而,可以基于该部分对应的源代码和该部分对应的前端代码,确定该部分对应的源代码和该部分对应的前端代码之间的位置转换关系,进而,可以确定出前端代码每个代码和该代码与源代码中的相匹配的代码之间位置转换关系,进而,可以确定源代码与前端代码之间的行列位置转换关系。
139.p2:基于确定的源代码与前端代码之间的行列位置转换关系,生成目标信息文件。
140.具体实施时,可以直接将确定的源代码与前端代码之间的行列位置转换关系作为目标信息文件,其中目标信息文件可以为sourcemap文件。
141.在一种实施方式中,生成目标信息文件的步骤也可以为目标监控系统对应的服务端完成的,具体的,上述步骤一、步骤二、步骤三、p1和p2为在服务端执行的,并在执行完成后得到目标信息文件。
142.在一种实施例中,在生成目标信息文件之后,还可以通过通信网络,将生成的目标信息文件发送给服务端,以用于后续服务端基于目标信息文件确定发生异常的源代码的行列位置信息。
143.另外,本公开实施例所提供的一种应用于服务端的异常信息上报方法,如图2所示,为本公开实施例所提供的一种应用于服务端的异常信息上报方法的流程图,可以包括以下步骤:
144.s201:获取客户端发送的符合预设格式的结构化数据;结构化数据用于指示客户端在前端代码运行过程中,运行出错的异常前端代码的行列位置信息。
145.这里,服务端为部署有目标监控系统的服务端,结构化数据可以客户端生成并发送的、用于指示客户端在前端代码运行过程中,运行出错的异常前端代码的行列位置信息,结构化数据为具有预设结构的数据。
146.具体实施时,在前端代码运行过程中,如果存在运行出错的异常前端代码,客户端可以按照上述各实施例所提供的方法,基于运行出错的异常前端代码的行列位置信息,生成符合预设格式的结构化数据并发送给目标监控系统对应的服务端。进而,服务端可以获取到结构化数据。
147.s202:根据结构化数据和预先获取的目标信息文件,确定客户端运行出错的异常
前端代码对应的源代码的行列位置信息;其中,目标信息文件中存储有源代码与前端代码之间的行列位置转换关系。
148.这里,目标文件信息为预先存储在服务端的、存储有源代码与前端代码之间的行列位置转换关系的文件信息。行列位置信息用于表征源代码中的各个代码在源代码中的行列位置。
149.具体实施时,可以对结构化数据进行解析,确定结构化数据所指示的运行出错的异常前端代码的行列位置信息。之后,可以基于目标信息文件中存储的源代码与前端代码之间的行列位置转换关系,对运行出错的异常前端代码的行列位置信息对应的行列位置进行转换,确定运行出错的异常前端代码对应的行列位置在源代码中对应的行列位置,将该行列位置作为运行出错的异常前端代码对应的源代码的行列位置信息。
150.在运行出错的异常前端代码的行列位置信息对应于多个行列位置的情况下,可以基于存储的源代码与前端代码之间的行列位置转换关系,确定出每个行列位置在源代码中对应的行列位置,进而,可以得到异常前端代码对应的多个源代码分别对应的行列位置信息。
151.在一种实施例中,目标文件信息可以是客户端预先基于源代码与前端代码之间的行列位置转换关系生成并发送至服务端的文件信息,服务端在获取到客户端发送的目标文件信息之后,可以将其存储在服务端,以用于后续确定运行出错的异常前端代码的行列位置信息。
152.或者,目标信息文件也可以是服务端在将源代码转换为前端代码的过程中,基于确定的源代码与前端代码之间的行列位置转换关系生成的,这里不进行限定。
153.在一种实施例中,确定客户端运行出错的异常前端代码对应的源代码的行列位置信息之后,服务端可以基于确定的源代码的行列位置信息,从源代码中获取位于行列位置信息对应的行列位置的目标源代码。这里,在行列位置信息为多个源代码分别对应的行列位置信息的情况下,可以基于每个源代码的行列位置信息对应的行列位置,从源代码中获取多个目标源代码,进而,可以将获取的多个目标源代码作为错误堆栈。
154.在得到目标源代码之后,可以基于目标源代码,生成异常提示信息并反馈给开发端。
155.这里,开发端为开发人员进行代码开发的一端。具体的,在确定源代码之后,可以生成异常提示信息,并将目标源代码添加在异常提示信息中,之后,将异常提示信息发送给开发端。进而,开发端的开发人员可以在开发端获取到异常提示信息,并对异常提示信息中的目标源代码进行维护。
156.如图3所示,为本公开实施例所提供的一种进行异常监控的完整流程图,可以包括以下步骤:
157.s301:获取待转化的源代码。
158.s302:将源代码转化为代码运行引擎对应的目标代码,并确定源代码和目标代码之间的行列位置转换关系。
159.s303:对目标代码进行压缩处理,得到前端代码。
160.s304:基于源代码和目标代码之间的行列位置转换关系,确定源代码与前端代码之间的行列位置转换关系,并基于确定的源代码与前端代码之间的行列位置转换关系,生
成目标信息文件。
161.这里,s301~s304可以在客户端执行,并在得到目标信息文件之后,执行s305,通过通信网络将目标信息文件发送至目标监控系统对应的客户端。
162.在另一种实施方式中,s301~s304可以在服务端执行,在这样的情况下,在生成目标信息文件之后,服务端可以直接将其存储在预设的存储位置,s305对应的步骤将被省略。
163.s305:将目标信息文件发送至目标监控系统对应的服务端。
164.s306:在前端代码运行过程中,确定运行出错的异常前端代码的行列位置信息,并基于异常前端代码的行列位置信息,生成异常前端代码对应的异常栈轨迹信息。
165.这里,s306可以由客户端对应的代码运行引擎执行完成的。
166.s307:异常监控系统获取异常栈轨迹信息,将异常栈轨迹信息转化为符合预设格式的结构化数据,并将结构化数据上传至目标监控系统对应的服务端。
167.s308:目标监控系统对应的服务端根据结构化数据和获取的目标信息文件,确定客户端运行出错的异常前端代码对应的源代码的行列位置信息。
168.关于s301~s308的具体实施过程,可以参考上述各实施例,此处不再赘述。
169.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
170.基于同一发明构思,本公开实施例中还提供了与异常信息上报方法对应的异常信息上报装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述异常信息上报方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
171.如图4所示,为本公开实施例提供的一种异常信息上报装置的示意图,包括:
172.第一确定模块401,用于在前端代码运行过程中,确定运行出错的异常前端代码的行列位置信息;
173.第一生成模块402,用于基于所述异常前端代码的行列位置信息,生成所述异常前端代码对应的异常栈轨迹信息;所述异常栈轨迹信息中包含所述异常前端代码的行列位置信息;
174.第一发送模块403,用于将所述异常栈轨迹信息转化为符合预设格式的结构化数据,并将所述结构化数据上传至目标监控系统;
175.其中,所述结构化数据用于所述目标监控系统结合目标信息文件,确定发生异常的源代码的行列位置信息;所述目标信息文件中存储有所述源代码与所述前端代码之间的行列位置转换关系。
176.在一种可能的实施方式中,所述第一发送模块403,用于确定所述前端代码对应的代码运行引擎的引擎格式;
177.基于所述引擎格式与所述预设格式之间的转换关系,将所述异常栈轨迹信息转化为所述预设格式的结构化数据。
178.在一种可能的实施方式中,所述装置还包括:
179.转换模块404,用于在前端代码运行过程中,确定运行出错的异常前端代码的行列位置信息之前,获取待转化的源代码;
180.将所述源代码转化为所述代码运行引擎对应的目标代码,并确定所述源代码和所
述目标代码之间的行列位置转换关系;
181.对所述目标代码进行压缩处理,得到所述前端代码。
182.在一种可能的实施方式中,所述装置还包括:
183.第二生成模块405,用于按照以下步骤生成所述目标信息文件:
184.基于所述源代码和所述目标代码之间的行列位置转换关系,确定所述源代码与所述前端代码之间的行列位置转换关系;
185.基于确定的所述源代码与所述前端代码之间的行列位置转换关系,生成所述目标信息文件。
186.在一种可能的实施方式中,所述装置还包括:
187.第二发送模块406,用于将生成的所述目标信息文件发送给服务端。
188.基于同一发明构思,本公开实施例中还提供了另一种与异常信息上报方法对应的异常信息上报装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述异常信息上报方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
189.如图5所示,为本公开实施例提供的另一种异常信息上报装置的示意图,包括:
190.获取模块501,用于获取客户端发送的符合预设格式的结构化数据;所述结构化数据用于指示所述客户端在前端代码运行过程中,运行出错的异常前端代码的行列位置信息;
191.第二确定模块502,用于根据所述结构化数据和预先获取的目标信息文件,确定所述客户端运行出错的异常前端代码对应的源代码的行列位置信息;
192.其中,所述目标信息文件中存储有所述源代码与所述前端代码之间的行列位置转换关系。
193.在一种可能的实施方式中,所述装置还包括:
194.接收模块503,用于按照以下步骤获取所述目标信息文件:
195.接收所述客户端发送的所述目标信息文件。
196.在一种可能的实施方式中,所述装置还包括:
197.提示模块504,用于确定所述客户端运行出错的异常前端代码对应的源代码的行列位置信息之后,基于确定的所述源代码的行列位置信息,从所述源代码中获取目标源代码;
198.基于所述目标源代码,生成异常提示信息并反馈给开发端。
199.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
200.本公开实施例还提供了一种计算机设备,如图6所示,为本公开实施例提供的一种计算机设备结构示意图,包括:
201.处理器61和存储器62;所述存储器62存储有处理器61可执行的机器可读指令,处理器61用于执行存储器62中存储的机器可读指令,所述机器可读指令被处理器61执行时,处理器61执行下述步骤:s101:在前端代码运行过程中,确定运行出错的异常前端代码的行列位置信息;s102:基于异常前端代码的行列位置信息,生成异常前端代码对应的异常栈轨迹信息;异常栈轨迹信息中包含异常前端代码的行列位置信息以及s103:将异常栈轨迹信息转化为符合预设格式的结构化数据,并将结构化数据上传至目标监控系统;其中,结构化
数据用于目标监控系统结合目标信息文件,确定发生异常的源代码的行列位置信息;目标信息文件中存储有源代码与前端代码之间的行列位置转换关系;或者,处理器61执行下述步骤:s201:获取客户端发送的符合预设格式的结构化数据;结构化数据用于指示客户端在前端代码运行过程中,运行出错的异常前端代码的行列位置信息以及s202:根据结构化数据和预先获取的目标信息文件,确定客户端运行出错的异常前端代码对应的源代码的行列位置信息;其中,目标信息文件中存储有源代码与前端代码之间的行列位置转换关系。
202.上述存储器62包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器61中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器61通过内存621与外部存储器622进行数据交换。
203.上述指令的具体执行过程可以参考本公开实施例中所述的异常信息上报方法的步骤,此处不再赘述。
204.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的异常信息上报方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
205.本公开实施例所提供的异常信息上报方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的异常信息上报方法的步骤,具体可参见上述方法实施例,在此不再赘述。
206.该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
207.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
208.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
209.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
210.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所
述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
211.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1