一种文件解析方法、装置、计算机设备以及存储介质与流程

文档序号:30693591发布日期:2022-07-09 15:48阅读:89来源:国知局
一种文件解析方法、装置、计算机设备以及存储介质与流程

1.本公开涉及计算机技术领域,具体而言,涉及一种文件解析方法、装置、计算机设备以及存储介质。


背景技术:

2.随着计算机技术的发展,越来越多的应用程序被客户端下载安装并使用。然而,应用程序在运行的过程中可能会出现异常,例如,卡死、闪退等,进而会导致应用程序发生崩溃。目标,开发人员可以通过在应用程序发生崩溃时所捕获的崩溃文件对应用程序的崩溃进行分析和处理,从而解决应用程序发生崩溃的问题。
3.然而,应用程序发生崩溃时所捕获的崩溃文件通常会存在捕获信息不全的问题,进而导致开发人员无法对崩溃文件进行合理的分析,进而影响了开发人员对应用程序进行维护的效率和进度。


技术实现要素:

4.本公开实施例至少提供一种文件解析方法、装置、计算机设备以及存储介质。
5.第一方面,本公开实施例提供了一种文件解析方法,该方法包括:获取应用程序发生崩溃生成的崩溃文件;所述崩溃文件中包含至少一种信息:系统信息、崩溃堆栈信息、库信息;确定所述崩溃文件中的第一识别码;其中,所述第一识别码用于指示对所述崩溃文件进行解析的目标执行文件;在确定出所述第一识别码不满足识别要求的情况下,在目标映射表中查询与所述崩溃文件相匹配的第二识别码;所述目标映射表用于指示所述应用程序所包含的资源库与识别码之间的映射关系;基于所述第二识别码解析所述崩溃文件,得到文件解析结果。
6.一种可选的实施方式中,所述应用程序包括系统库;所述方法还包括:确定所述应用程序中系统库的第一标准识别码和所述系统库的库名,并确定所述应用程序的系统信息;基于所述系统信息、所述系统库的库名和所述第一标准识别码建立第一映射表;其中,所述第一映射表用于指示所述系统库和识别码之间的映射关系,所述系统信息中包含以下至少之一:操作系统名称、操作系统版本和处理器类型。
7.一种可选的实施方式中,所述应用程序包括三方库;所述方法还包括:确定所述应用程序中三方库的第二标准识别码和所述三方库的库名,并确定所述应用程序的应用版本号;基于所述应用版本号、所述三方库的库名和所述第二标准识别码建立第二映射表,其中,所述第二映射表用于指示所述三方库和识别码之间的映射关系。
8.一种可选的实施方式中,所述目标映射表的数量为多个,不同映射表所对应资源库的类型不同;所述在确定出所述第一识别码不满足识别要求的情况下,在目标映射表中查询与所述崩溃文件相匹配的第二识别码,包括:在确定出所述第一识别码不满足识别要求的情况下,确定所述第一识别码所对应资源库的类型信息;基于所述类型信息确定与所述第一识别码相匹配目标映射表;在所述相匹配目标映射表中查询与所述崩溃文件相匹配
的第二识别码。
9.一种可选的实施方式中,所述在所述相匹配目标映射表中查询与所述崩溃文件相匹配的第二识别码,包括:在确定出所述相匹配目标映射表为第一映射表的情况下,提取所述崩溃文件中的第一查找信息,其中,所述第一查找信息包括:系统信息和/或系统库的库名;所述第一映射表用于指示所述系统库和识别码之间的映射关系;在所述第一映射表中查找与所述第一查找信息相匹配的识别码为所述第二识别码。
10.一种可选的实施方式中,所述在所述相匹配目标映射表中查询与所述崩溃文件相匹配的第二识别码,包括:在所述相匹配目标映射表为第二映射表的情况下,提取所述崩溃文件中的第二查找信息,其中,所述第二查找信息包括:三方库的库名和/或所述应用程序的应用版本号;在所述第二映射表中查找与所述第二查找信息相匹配的识别码为所述第二识别码。
11.一种可选的实施方式中,所述目标执行文件为符号表文件;所述基于所述第二识别码解析所述崩溃文件,得到文件解析结果,包括:基于所述第二识别码确定对应的目标符号表文件;基于所述目标符号表文件调用解析函数,并基于所述解析函数解析所述崩溃文件。
12.一种可选的实施方式中,所述方法还包括:在得到所述崩溃文件的解析结果之后,向所述应用程序所在终端设备发送所述解析结果。
13.第二方面,本公开实施例还提供一种文件解析装置,包括:获取单元,用于获取应用程序发生崩溃生成的崩溃文件;所述崩溃文件中包含至少一种信息:系统信息、崩溃堆栈信息、库信息;确定单元,用于确定所述崩溃文件中的第一识别码;其中,所述第一识别码用于指示对所述崩溃文件进行解析的目标执行文件;查询单元,用于在确定出所述第一识别码不满足识别要求的情况下,在目标映射表中查询与所述崩溃文件相匹配的第二识别码;所述目标映射表用于指示所述应用程序所包含的资源库与识别码之间的映射关系;解析单元,用于基于所述第二识别码解析所述崩溃文件,得到文件解析结果。
14.第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
15.第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
16.通过上述描述可知,可以在获取应用程序发生崩溃生成的崩溃文件之后,确定该崩溃文件中的第一识别码,并在确定出该第一识别码不满足识别要求的情况下,在目标映射表中查询与该崩溃文件相匹配的第二识别码,从而可以确定出与该崩溃文件相匹配的且满足识别要求的第二识别码,解决了第一识别码无法识别的问题。之后,可以基于该第二识别码解析崩溃文件,得到文件解析结果,从而可以实现对应用程序发生的崩溃进行准确定位和分析,进而提升应用程序的质量。
17.为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
18.为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
19.图1示出了本公开实施例所提供的一种文件解析方法的流程图;
20.图2示出了本公开实施例所提供的建立第一映射表方法的流程图;
21.图3示出了本公开实施例所提供的建立第二映射表方法的流程图;
22.图4示出了本公开实施例所提供的在目标执行文件为符号表文件的情况下,基于所述第二识别码解析所述崩溃文件,得到文件解析结果方法的流程图;
23.图5示出了本公开实施例所提供的一种文件解析装置的示意图;
24.图6示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
25.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
26.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
27.本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
28.经研究发现,随着计算机技术的发展,越来越多的应用程序被客户端下载安装并使用。然而,应用程序在运行的过程中可能会出现异常,例如,卡死、闪退等,进而会导致应用程序发生崩溃。目标,开发人员可以通过在应用程序发生崩溃时所捕获的崩溃文件对应用程序的崩溃进行分析和处理,从而解决应用程序发生崩溃的问题。
29.然而,应用程序发生崩溃时所捕获的崩溃文件通常会存在捕获信息不全的问题,进而导致开发人员无法对崩溃文件进行合理的分析,进而影响了开发人员对应用程序进行维护的效率和进度。
30.一般情况下,捕获崩溃以及崩溃解析的流程可以描述为如下过程。
31.首先,将应用程序所包含资源库的符号表上传至服务器,建立符号表、识别该符号表的标识码和资源库的库名之间的映射关系,并将该映射关系存储在数据库中。
32.在检测到应用程序发生崩溃的情况下,应用程序所在的客户端可以记录系统信
息、崩溃堆栈信息和加载的库的库信息到崩溃文件中,并将该崩溃文件上传至服务器端。
33.之后,服务器端就可以基于该崩溃文件中加载的库的库信息确定加载的库的库名和该库名对应的识别码,并根据识别码和库名查询上述映射关系,得到相匹配的符号表。接着,就可以利用该相匹配的符号表调用解析函数解析崩溃文件,得到文件解析结果。
34.然而,在应用程序所在的客户端所记录的崩溃文件中通常会出现识别码无法识别的现象,进而会导致服务器无法查询得到与该识别码相匹配的符号表,进而无法解析崩溃文件的现象。
35.基于上述研究,本公开提供了一种文件解析方法、装置、计算机设备以及存储介质。通过上述描述可知,可以在获取应用程序发生崩溃生成的崩溃文件之后,确定该崩溃文件中的第一识别码,并在确定出该第一识别码不满足识别要求的情况下,在目标映射表中查询与该崩溃文件相匹配的第二识别码,从而可以确定出与该崩溃文件相匹配的且满足识别要求的第二识别码,解决了第一识别码无法识别的问题。之后,可以基于该第二识别码解析崩溃文件,得到文件解析结果,从而可以实现对应用程序发生的崩溃进行准确定位和分析,进而提升应用程序的质量。
36.为便于对本实施例进行理解,首先对本公开实施例所公开的一种文件解析方法进行详细介绍,本公开实施例所提供的文件解析方法的执行主体一般为具有一定计算能力的计算机设备。
37.参见图1所示,为本公开实施例提供的一种文件解析方法的流程图,所述方法包括步骤s101~s107,其中:
38.s101:获取应用程序发生崩溃生成的崩溃文件;所述崩溃文件中包含至少一种信息:系统信息、崩溃堆栈信息、库信息。
39.在本公开实施例中,可以在客户端中安装崩溃捕获工具,并在该崩溃捕获工具检测到客户端中的应用程序发生崩溃之后,通过该崩溃捕获工具获取应用程序发生崩溃时所生成的崩溃文件。其中,上述崩溃捕获工具可以为breakpad,也可以为crashpad,本公开对上述崩溃捕获工具不作具体限定,以能实现为准。
40.在本公开实施例中,崩溃文件中可以包含以下至少一种信息:系统信息、崩溃堆栈信息、库信息等。其中,系统信息可以用于指示应用程序所在客户端所对应系统的相关信息,例如,该系统信息可以包含至少以下信息:操作系统名称、操作系统版本、处理器名称。
41.其中,崩溃堆栈信息可以用于指示应用程序发生崩溃时所对应的崩溃地址和崩溃程序等。
42.其中,库信息可以用于指示应用程序所包含的资源库的相关信息,例如,该库信息可以用于指示应用程序所包含资源库的库名和每个库所对应的uuid(universally unique identifier,通用唯一识别码)。
43.在本公开实施例中,应用程序所包含资源库可以为系统库,和/或,三方库,其中,系统库用于指示应用程序所包含的与操作系统相关联的公共的库,三方库用于指示应用程序所包含的开发人员为满足应用程序的需求所自定义的库。
44.s103:确定所述崩溃文件中的第一识别码;其中,所述第一识别码用于指示对所述崩溃文件进行解析的目标执行文件。
45.在本公开实施例中,第一识别码用于指示对崩溃文件进行解析的目标执行文件,
其中,该目标执行文件可以为符号表文件。在此情况下,第一识别码即为可以用于指示符号表文件的识别码。
46.在本公开实施例中,第一识别码可以为崩溃文件中库信息所包含的uuid。
47.s105:在确定出所述第一识别码不满足识别要求的情况下,在目标映射表中查询与所述崩溃文件相匹配的第二识别码;所述目标映射表用于指示所述应用程序所包含的资源库与识别码之间的映射关系。
48.在本公开实施例中,识别要求可以理解为第一识别码的完整度要求,例如,在第一识别码为不完整的情况下,可以确定第一识别码不满足识别要求,在第一识别码为完整的情况下,可以确定第一识别码满足识别要求。
49.其中,在第一识别码为uuid的情况下,第一识别码不完整可以理解为该uuid为000000000000000000000000000000000,在第一识别码完整可以理解为uuid不为000000000000000000000000000000000。
50.在本公开实施例中,在确定出第一识别码不满足识别要求的情况下,可以在目标映射表中查询与崩溃文件相匹配的第二识别码。
51.其中,第二识别码可以理解为在第一识别码为完整的情况下的识别码。例如,在识别码为b0f8044975de3923bb7eae1c6f846a730的情况下,则第一识别码为不完整的情况下,该第一识别码可以为000000000000000000000000000000000,此时,在目标映射表中查询得到的第二识别码即为b0f8044975de3923bb7eae1c6f846a730。
52.s107:基于所述第二识别码解析所述崩溃文件,得到文件解析结果。
53.在本公开实施例中,在查询得到第二识别码之后,可以基于该第二识别码解析崩溃文件,得到文件解析结果。
54.具体实施时,可以基于第二识别码确定该第二识别码所指示的目标执行文件,之后,可以基于该目标执行文件解析崩溃文件,得到文件解析结果。
55.此外,在第一识别码满足识别要求的情况下,即可以基于该第一识别码解析崩溃文件,得到文件解析结果。
56.通过上述描述可知,可以在获取应用程序发生崩溃生成的崩溃文件之后,确定该崩溃文件中的第一识别码,并在确定出该第一识别码不满足识别要求的情况下,在目标映射表中查询与该崩溃文件相匹配的第二识别码,从而可以确定出与该崩溃文件相匹配的且满足识别要求的第二识别码,解决了第一识别码无法识别的问题。之后,可以基于该第二识别码解析崩溃文件,得到文件解析结果,从而可以实现对应用程序发生的崩溃进行准确定位和分析,进而提升应用程序的质量。
57.在一个可选的实施方式中,如图2所示,在应用程序包括系统库的情况下,针对s101~s107,本公开方法还包括如下步骤:
58.步骤s21:确定所述应用程序中系统库的第一标准识别码和所述系统库的库名,并确定所述应用程序的系统信息;
59.步骤s22:基于所述系统信息、所述系统库的库名和所述第一标准识别码建立第一映射表;其中,所述第一映射表用于指示所述系统库和识别码之间的映射关系,所述系统信息中包含以下至少之一:操作系统名称、操作系统版本和处理器类型。
60.在本公开实施例中,第一标准识别码可以理解为应用程序的系统库所对应的满足
识别要求的识别码。其中,第一标准识别码可以基于该系统库对应的目标执行文件确定。
61.具体实施时,可以先获取应用程序的系统库所对应的系统文件,之后,再基于该系统文件确定系统库的目标执行文件(例如,系统符号表文件)。接着,可以基于系统库的目标执行文件确定该系统库对应的第一标准识别码。例如,可以将该目标执行文件中的第一行确定为该第一标准识别码,或者,也可以将该目标执行文件中的第二行确定为该第一标准识别码,本公开对上述基于目标执行文件确定第一标准识别码的方式不作具体限定,以能实现为准。
62.在此需要说明的是,应用程序的系统库对应的系统文件是服务器端自动获取的,并可以在获取到系统文件之后,基于该系统文件确定系统库的第一标准识别码。
63.此外,服务器还可以通过查询历史的崩溃文件中记载的崩溃信息得到系统库的第一标准识别码。
64.在本公开实施例中,还可以基于该系统文件确定系统库的库名和系统信息,其中,该系统信息可以为:操作系统名称、操作系统版本、处理器类型等信息。之后,就可以建立系统库的库名、系统信息和第一标准识别码之间的映射关系,得到第一映射表。即该第一映射表可以为库名_操作系统名称_操作系统版本_处理器名称_第一标准识别码之间的映射关系。
65.上述实施方式中,在应用程序包含系统库的情况下,可以基于应用程序的系统信息、系统库的库名和系统库的第一标准识别码建立第一映射表,进而在崩溃文件中第一识别码不满足识别要求的情况下,可以通过该第一映射表查询得到与崩溃文件相匹配的第二识别码。
66.在一个可选的实施方式中,如图3所示,在应用程序包括三方库的情况下,针对s101~s107,本公开方法还包括如下步骤:
67.步骤s31:确定所述应用程序中三方库的第二标准识别码和所述三方库的库名,并确定所述应用程序的应用版本号;
68.步骤s32:基于所述应用版本号、所述三方库的库名和所述第二标准识别码建立第二映射表,其中,所述第二映射表用于指示所述三方库和识别码之间的映射关系。
69.在本公开实施例中,第二标准识别码可以理解为应用程序的三方库所对应的满足识别要求的识别码。其中,第二标准识别码可以基于应用程序的三方库所对应的目标执行文件确定。
70.具体实施时,在应用程序设计完成之后,可以将该应用程序的三方库的库名、三方库的目标执行文件(例如,三方库符号表)以及应用程序对应的应用版本号,并存储至服务器的数据库中。之后,可以基于该系统文件确定系统库的目标执行文件(例如,系统库符号表文件)。接着,可以将该三方库的目标执行文件中的第一行确定为该第二标准识别码,或者,也可以将该三方库的目标执行文件中的第二行确定为该第二标准识别码,本公开对上述基于目标执行文件确定第二标准识别码的方式不作具体限定,以能实现为准。
71.在本公开实施例中,可以基于应用程序的应用版本号、三方库的库名和第二标准识别码建立第二映射表,即该第二映射表可以为库名_应用版本号_第二标准识别码之间的映射关系。
72.上述实施方式中,在应用程序包含三方库的情况下,可以基于应用程序的应用版
本号、三方库的库名和三方库的第二标准识别码建立第二映射表,进而在崩溃文件中第一识别码不满足识别要求的情况下,可以通过该第二映射表查询得到与崩溃文件相匹配的第二识别码。
73.在一个可选的实施方式中,在目标映射表的数量为多个,不同映射表所对应资源库的类型不同的情况下,针对s105:在确定出所述第一识别码不满足识别要求的情况下,在目标映射表中查询与所述崩溃文件相匹配的第二识别码,具体包括如下步骤:
74.步骤s41:在确定出所述第一识别码不满足识别要求的情况下,确定所述第一识别码所对应资源库的类型信息;
75.步骤s42:基于所述类型信息确定与所述第一识别码相匹配目标映射表;
76.步骤s43:在所述相匹配目标映射表中查询与所述崩溃文件相匹配的第二识别码。
77.在本公开实施例中,目标映射表可以用于指示应用程序所包含的资源库与识别码之间的映射关系,因此,在应用程序所包含的资源库为多个的情况下,目标映射表的数量也为多个,且不同的目标映射表对应不同的资源库的类型。
78.例如,在应用程序所包含资源库的类型为2个的情况下,目标映射表的数量也为2个,在应用程序所包含资源库的类型为3个的情况下,目标映射表的数量也为3个,本公开对应用程序所包含资源库的类型以及目标映射表的数量不作限定,以能实现为准。
79.在本公开实施例中,应用程序所包含的资源库的类型为2个,一个是资源库的类型为系统库类型,另一个是资源库的类型为三方库类型。
80.因此,在确定出第一识别码不满足识别要求的情况下,可以确定该第一识别码所对应资源库的类型信息,并基于该类型信息确定与该第一识别码相匹配的目标映射表。
81.其中,在确定第一识别码所对应资源库的类型信息的情况下,可以基于该第一识别码所对应资源库的库名确定该类型信息。
82.在本公开实施例中,在确定出与该第一识别码相匹配的目标映射表之后,可以在该相匹配的目标映射表中查询与崩溃文件相匹配的第二识别码。
83.上述实施方式中,可以在确定出第一识别码不满足识别要求的情况下,确定该第一识别码所对应资源库的类型信息,并基于该类型信息确定与该第一识别码相匹配的目标映射表。之后,可以在该相匹配的目标映射表中查询与崩溃文件相匹配的第二识别码。从而可以针对不同类型的资源库均建立对应的目标映射表,进而可以更加准确、全面的建立应用程序中所包含资源库与该资源库对应的识别码之间的映射关系,进而可以提高解析崩溃文件的成功率。
84.在一个可选的实施方式中,针对上述步骤s43:在所述相匹配目标映射表中查询与所述崩溃文件相匹配的第二识别码,具体包括如下步骤:
85.步骤s51:在确定出所述相匹配目标映射表为第一映射表的情况下,提取所述崩溃文件中的第一查找信息,其中,所述第一查找信息包括:系统信息和/或系统库的库名;所述第一映射表用于指示所述系统库和识别码之间的映射关系;
86.步骤s52:在所述第一映射表中查找与所述第一查找信息相匹配的识别码为所述第二识别码。
87.在本公开实施例中,在确定出应用程序的资源库为系统库的情况下,可以确定与该系统库相匹配的目标映射表为第一映射表。
88.在确定出上述相匹配的目标映射表为第一映射表的情况下,可以在获取到的崩溃文件中提取第一查找信息。其中,第一查找信息可以用于指示第一映射表中除第二识别码之外的信息,例如,如上述步骤s22中所述的系统信息和/或系统库的库名。其中,系统信息即为崩溃文件中所包含的系统信息,系统库的库名即为崩溃文件中所包含库信息中的库名。
89.在本公开实施例中,在提取得到第一查找信息之后,可以在第一映射表中查找与该第一查找信息相匹配的识别码。并将该相匹配的识别码确定为第二识别码。
90.上述实施方式中,在确定出相匹配目标映射表为第一映射表的情况下,可以通过提取崩溃文件中的第一查找信息,并在第一映射表中查找与该第一查找信息相匹配的识别码,并将该相匹配的识别码确定为第二识别码。从而可以在第一识别码不满足识别要求的情况下,可以通过崩溃文件得到与该崩溃文件相匹配的第二识别码,从而可以解决在第一识别码不满足识别要求的情况下无法解析崩溃文件的问题,进而可以提高崩溃文件解析成功的概率,进而可以进一步提升应用程序的质量。
91.在一个可选的实施方式中,针对上述步骤s43:在所述相匹配目标映射表中查询与所述崩溃文件相匹配的第二识别码,具体包括如下步骤:
92.步骤s61:在所述相匹配目标映射表为第二映射表的情况下,提取所述崩溃文件中的第二查找信息,其中,所述第二查找信息包括:三方库的库名和/或所述应用程序的应用版本号;
93.步骤s62:在所述第二映射表中查找与所述第二查找信息相匹配的识别码为所述第二识别码。
94.在本公开实施例中,在确定出应用程序的资源库为三方库的情况下,可以确定与该系统库相匹配的目标映射表为第二映射表。
95.在确定出上述相匹配的目标映射表为第二映射表的情况下,可以在获取到的崩溃文件中提取第二查找信息。其中,第二查找信息可以用于指示第二映射表中除第二识别码之外的信息,例如,如上述步骤s32中所述的应用版本号和/或三方库的库名。
96.其中,应用版本号可以包含在崩溃文件中,例如,在崩溃捕获工具在采集应用程序发生崩溃时所产生的崩溃信息生成崩溃文件的情况下,同时采集该应用程序的应用版本号到崩溃文件中。此外,应用版本号也可以吧不包含在崩溃文件中,此时,在获取应用程序发生崩溃生成的崩溃文件的情况下,可以同时获取应用程序的应用版本号。本公开对该应用版本号的存储位置不作限定,以能实现为准。
97.在本公开实施例中,在提取得到第二查找信息之后,可以在第二映射表中查找与该第二查找信息相匹配的识别码。并将该相匹配的识别码确定为第二识别码。
98.上述实施方式中,在确定出相匹配目标映射表为第二映射表的情况下,可以通过提取第二查找信息,并在第二映射表中查找与该第二查找信息相匹配的识别码,并将该相匹配的识别码确定为第二识别码。从而可以在第一识别码不满足识别要求的情况下,可以通过崩溃文件得到与该崩溃文件相匹配的第二识别码,从而可以解决在第一识别码不满足识别要求的情况下无法解析崩溃文件的问题,进而可以提高崩溃文件解析成功的概率,进而可以及时对应用程序的崩溃进行分析和改进,以进一步提升应用程序的质量。
99.在一个可选的实施方式中,如图4所示,在目标执行文件为符号表文件的情况下,
针对s107:基于所述第二识别码解析所述崩溃文件,得到文件解析结果,具体包括如下步骤:
100.步骤s71:基于所述第二识别码确定对应的目标符号表文件;
101.步骤s72:基于所述目标符号表文件调用解析函数,并基于所述解析函数解析所述崩溃文件。
102.在本公开实施例中,在确定出第二识别码之后,可以基于该第二识别码确定与该第二识别码相对应的目标符号表文件。此时,该第二识别码也可以理解为应用程序所包含资源库中每个库所对应的标准识别码。例如,在资源库为系统库的情况下,该第二识别码即为第一标准识别码,在资源库为三方库的情况下,该第二识别码即为第二标准识别码。
103.之后,就可以基于该目标符号表文件调用解析函数,并基于该解析函数解析崩溃文件,得到文件解析结果。其中,解析函数可以为minidump_stackwalk。
104.其中,该文件解析结果可以理解为崩溃文件中崩溃堆栈的解析结果。该文件解析结果中可以包含至少以下信息:崩溃位置、崩溃代码、崩溃库信息、崩溃应用程序名称等。
105.上述实施方式中,可以基于第二识别码确定对应的目标符号表文件,并基于该目标符号表文件调用解析函数,以解析崩溃文件得到文件解析结果的方式,可以确定出更加准确的目标符号表文件,进而可以得到更加准确的文件解析结果。
106.在一个可选的实施方式中,针对s101~s107,本公开方法具体还包括:
107.在得到所述崩溃文件的解析结果之后,向所述应用程序所在终端设备发送所述解析结果。
108.在本公开实施例中,在应用程序的系统库的第一识别码不满足识别要求的情况下,服务端可以通过系统版本号、库名、第一标准识别码来准确匹配系统符号表。而在应用程序的三方库的第一识别码不满足识别要求的情况下,该三方库可用的匹配信息仅有:库名,应用版本号。由于同一版本号下可能存在三方库升级的情况,因此可能会存在得到崩溃文件的解析结果不够准确的现象。
109.因此,在本公开实施例中,在得到崩溃文件的解析结果之后,可以向应用程序所在终端设备发送该解析结果。例如,可以向应用程序所在终端设备发送一个选择框,该选择框内的内容可以为“解析是否正确”,并由终端设备处的用户确定该解析结果是否正确。
110.在此需要说明的是,本公开对向应用程序所在终端设备发送的解析结果的内容不作具体限定,以能实现终端设备处的用户确定该解析结果是否正确为准。
111.上述实施方式中,可以基于应用程序所在终端设备的用户确定该解析结果是否正确,进而可以辅助服务器端的工作人员更加准确、快速的确定崩溃的原因,进而可以提高改善该应用程序崩溃的效率和准确度。
112.本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
113.基于同一发明构思,本公开实施例中还提供了与文件解析方法对应的文件解析装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述文件解析方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
114.参照图5所示,为本公开实施例提供的一种文件解析装置的示意图,所述装置包
括:获取单元51、确定单元52、查询单元53、解析单元54;其中,
115.获取单元51,用于获取应用程序发生崩溃生成的崩溃文件;所述崩溃文件中包含至少一种信息:系统信息、崩溃堆栈信息、库信息;
116.确定单元52,用于确定所述崩溃文件中的第一识别码;其中,所述第一识别码用于指示对所述崩溃文件进行解析的目标执行文件;
117.查询单元53,用于在确定出所述第一识别码不满足识别要求的情况下,在目标映射表中查询与所述崩溃文件相匹配的第二识别码;所述目标映射表用于指示所述应用程序所包含的资源库与识别码之间的映射关系;
118.解析单元54,用于基于所述第二识别码解析所述崩溃文件,得到文件解析结果。
119.通过上述描述可知,可以在获取应用程序发生崩溃生成的崩溃文件之后,确定该崩溃文件中的第一识别码,并在确定出该第一识别码不满足识别要求的情况下,在目标映射表中查询与该崩溃文件相匹配的第二识别码,从而可以确定出与该崩溃文件相匹配的且满足识别要求的第二识别码,解决了第一识别码无法识别的问题。之后,可以基于该第二识别码解析崩溃文件,得到文件解析结果,从而可以实现对应用程序发生的崩溃进行准确定位和分析,进而提升应用程序的质量。
120.一种可能的实施方式中,在应用程序包括系统库的情况下,该装置还用于:确定所述应用程序中系统库的第一标准识别码和所述系统库的库名,并确定所述应用程序的系统信息;基于所述系统信息、所述系统库的库名和所述第一标准识别码建立第一映射表;其中,所述第一映射表用于指示所述系统库和识别码之间的映射关系,所述系统信息中包含以下至少之一:操作系统名称、操作系统版本和处理器类型。
121.一种可能的实施方式中,在应用程序包括三方库的情况下,该装置还用于:确定所述应用程序中三方库的第二标准识别码和所述三方库的库名,并确定所述应用程序的应用版本号;基于所述应用版本号、所述三方库的库名和所述第二标准识别码建立第二映射表,其中,所述第二映射表用于指示所述三方库和识别码之间的映射关系。
122.一种可能的实施方式中,在目标映射表的数量为多个,不同映射表所对应资源库的类型不同的情况下,查询单元,还用于:在确定出所述第一识别码不满足识别要求的情况下,确定所述第一识别码所对应资源库的类型信息;基于所述类型信息确定与所述第一识别码相匹配目标映射表;在所述相匹配目标映射表中查询与所述崩溃文件相匹配的第二识别码。
123.一种可能的实施方式中,查询单元,还用于:在确定出所述相匹配目标映射表为第一映射表的情况下,提取所述崩溃文件中的第一查找信息,其中,所述第一查找信息包括:系统信息和/或系统库的库名;所述第一映射表用于指示所述系统库和识别码之间的映射关系;在所述第一映射表中查找与所述第一查找信息相匹配的识别码为所述第二识别码。
124.一种可能的实施方式中,查询单元,还用于:在所述相匹配目标映射表为第二映射表的情况下,提取所述崩溃文件中的第二查找信息,其中,所述第二查找信息包括:三方库的库名和/或所述应用程序的应用版本号;在所述第二映射表中查找与所述第二查找信息相匹配的识别码为所述第二识别码。
125.一种可能的实施方式中,在目标执行文件为符号表文件的情况下,解析单元,还用于:基于所述第二识别码确定对应的目标符号表文件;基于所述目标符号表文件调用解析
函数,并基于所述解析函数解析所述崩溃文件。
126.一种可能的实施方式中,解析单元,还用于:在得到所述崩溃文件的解析结果之后,向所述应用程序所在终端设备发送所述解析结果。
127.关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
128.对应于图1中的文件解析方法,本公开实施例还提供了一种计算机设备600,如图6所示,为本公开实施例提供的计算机设备600结构示意图,包括:
129.处理器61、存储器62、和总线63;存储器62用于存储执行指令,包括内存621和外部存储器622;这里的内存621也称内存储器,用于暂时存放处理器61中的运算数据,以及与硬盘等外部存储器622交换的数据,处理器61通过内存621与外部存储器622进行数据交换,当所述计算机设备600运行时,所述处理器61与所述存储器62之间通过总线63通信,使得所述处理器61执行以下指令:
130.获取应用程序发生崩溃生成的崩溃文件;所述崩溃文件中包含至少一种信息:系统信息、崩溃堆栈信息、库信息;
131.确定所述崩溃文件中的第一识别码;其中,所述第一识别码用于指示对所述崩溃文件进行解析的目标执行文件;
132.在确定出所述第一识别码不满足识别要求的情况下,在目标映射表中查询与所述崩溃文件相匹配的第二识别码;所述目标映射表用于指示所述应用程序所包含的资源库与识别码之间的映射关系;
133.基于所述第二识别码解析所述崩溃文件,得到文件解析结果。
134.本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的文件解析方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
135.本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的文件解析方法的步骤,具体可参见上述方法实施例,在此不再赘述。
136.其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
137.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
138.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
139.另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
140.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
141.最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1