CN115756934A - 一种应用崩溃分析方法及装置 - Google Patents
一种应用崩溃分析方法及装置 Download PDFInfo
- Publication number
- CN115756934A CN115756934A CN202211535752.9A CN202211535752A CN115756934A CN 115756934 A CN115756934 A CN 115756934A CN 202211535752 A CN202211535752 A CN 202211535752A CN 115756934 A CN115756934 A CN 115756934A
- Authority
- CN
- China
- Prior art keywords
- crash
- information
- register
- instruction
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本说明书实施例提供一种应用崩溃分析方法及装置,该方法包括:获取待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件;解析崩溃转储文件和内存映射文件,得到解析结果,其中,解析结果包括应用原生层崩溃发生时所涉及的崩溃相关信息;从解析结果中提取出当前崩溃特征;基于当前崩溃特征以及预设的多个崩溃类型分别对应的崩溃特征集,确定应用原生层崩溃所属的目标崩溃类型,其中,崩溃特征集用于维护不同的应用原生层崩溃的崩溃类型各自对应的崩溃特征;基于目标崩溃类型,确定对应的调试参考信息,其中,调试参考信息用于指示应用原生层崩溃对应的辅助分析方向。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种应用崩溃分析方法及装置。
背景技术
如何分析安卓Android操作系统中的Native崩溃(即应用原生层崩溃)是困扰开发人员的一大难题。Tombstone崩溃转储文件是Android操作系统提供的用于存储Native崩溃发生时的相关系统信息(例如包括引发Native崩溃发生的信号信息、Native崩溃发生时所有寄存器的信息和所有的内存信息以及相关的堆栈调用信息等)的文件。目前,开发者需要通过人工分析Tombstone文件及其他相关的系统文件(比如内存映射文件、日志文件等),来确定导致Native崩溃发生的真正原因以及具体情况,进而确定针对Native崩溃的解决办法。
而为了准确地分析出导致Native崩溃发生的真正原因以及具体情况,需要从Tombstone文件及其他相关的系统文件分析出Native崩溃发生当时所涉及的各种崩溃相关信息(例如崩溃类型、崩溃涉及的指令、动作等等)。上述人工分析过程需要消耗较多人力,且效率不高。那么如何提供一种有助于提高Native崩溃的分析效率的方法成为亟待解决的问题。
发明内容
本说明书一个或多个实施例提供了一种应用崩溃分析方法及装置,以实现提高Native崩溃的发生原因的分析效率,且降低人工成本。
根据第一方面,提供一种应用崩溃分析方法,包括:
获取待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件;
解析所述崩溃转储文件和所述内存映射文件,得到解析结果,其中,所述解析结果包括所述应用原生层崩溃发生时所涉及的崩溃相关信息;
从所述解析结果中提取出当前崩溃特征;
基于所述当前崩溃特征以及预设的多个崩溃类型分别对应的崩溃特征集,确定所述应用原生层崩溃所属的目标崩溃类型,其中,所述崩溃特征集用于维护不同的应用原生层崩溃的崩溃类型各自对应的崩溃特征;
基于所述目标崩溃类型,确定对应的调试参考信息,其中,所述调试参考信息用于指示应用原生层崩溃对应的辅助分析方向。
根据第二方面,提供一种应用崩溃分析装置,包括:
第一获取模块,配置为获取待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件;
第一解析模块,配置为解析所述崩溃转储文件和所述内存映射文件,得到解析结果,其中,所述解析结果包括所述应用原生层崩溃发生时所涉及的崩溃相关信息;
第一确定模块,配置为从所述解析结果中提取出当前崩溃特征;
第二确定模块,配置为基于所述当前崩溃特征以及预设的多个崩溃类型分别对应的崩溃特征集,确定所述应用原生层崩溃所属的目标崩溃类型,其中,所述崩溃特征集用于维护不同的应用原生层崩溃的崩溃类型各自对应的崩溃特征;
第三确定模块,配置为基于所述目标崩溃类型,确定对应的调试参考信息,其中,所述调试参考信息用于指示应用原生层崩溃对应的辅助分析方向。
根据第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
根据第四方面,提供一种电子设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
根据本说明书实施例提供的方法及装置,获取待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件;解析崩溃转储文件和内存映射文件,得到包括应用原生层崩溃发生时所涉及的崩溃相关信息的解析结果,进而从解析结果中提取出用于辅助确定应用原生层崩溃的崩溃类型的当前崩溃特征;基于当前崩溃特征以及预设的多个崩溃类型分别对应的崩溃特征集,确定应用原生层崩溃所属的目标崩溃类型,其中崩溃特征集用于维护不同的应用原生层崩溃的崩溃类型各自对应的崩溃特征;基于目标崩溃类型,确定对应的用于指示应用原生层崩溃对应的辅助分析方向的调试参考信息。上述过程中,预先存储用于维护不同的应用原生层崩溃的崩溃类型分别对应的崩溃特征集,可以基于该多个崩溃特征集,以及从崩溃转储文件和内存映射文件的解析结果中所确定出的待分析的应用原生层崩溃的当前崩溃特征,能够自动确定出应用原生层崩溃所属的目标崩溃类型,进而确定出对应的用于指示应用原生层崩溃对应的辅助分析方向的调试参考信息。应用原生层崩溃所属的目标崩溃类型的确定过程无需人工参与,解放了人力,降低人工成本,且在一定程度上提供了类型确定准确性,且基于目标崩溃类型确定出用于指示应用原生层崩溃对应的辅助分析方向,直接为用户指明应用原生层崩溃相应的辅助分析方向,在一定程度上可以更好的降低人力消耗,提高分析定位应用原生层崩溃发生原因以及具体情况等的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书披露的一个实施例的实施框架示意图;
图2为实施例提供的应用崩溃分析方法的一种流程示意图;
图3为实施例提供的应用崩溃分析装置的一种示意性框图;
图4为实施例提供的一种电子设备的示意性框图。
具体实施方式
下面将结合附图,详细描述本说明书实施例的技术方案。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
本说明书实施例披露一种应用崩溃分析方法及装置,下面首先对方法的应用场景和技术构思进行介绍,具体如下:
如前所述,目前开发人员针对安卓Android操作系统中的应用原生层Native崩溃进行分析时,一般是首先获取待分析的Native崩溃对应的崩溃转储文件和内存映射文件。进而,人工对崩溃转储文件和内存映射文件进行分析,从崩溃转储文件中人工查找导致Native崩溃发生时的错误信号信息、Native崩溃发生时所涉及的真正指令(即Native崩溃发生时正在执行的指令)、该指令涉及的动作以及寄存器的信息等,并需要基于涉及的寄存器的信息从内存映射文件确定出Native崩溃涉及的内存映射信息,进而,基于前述分析的信息确定Native崩溃的原因以及具体情况,进而确定Native崩溃的解决方法。
其过程需要开发人员熟悉Android操作系统的相关知识以及汇编语言,对开发人员要求较高,并且其过程中需要耗费大量人力分析崩溃转储文件和内存映射文件,人力成本高且效率较低。
鉴于上述情况,图1示出根据本说明书披露的一个实施例的实施场景示意图。在该实施场景中,目标程序首先获取待分析的应用原生层Native崩溃对应的崩溃转储Tombstone文件和内存映射文件。其中,该Tombstone文件可以包括Native崩溃时的相关系统信息,例如包括Native崩溃对应的进程(包括线程)信息及崩溃信号信息、Native崩溃发生时的寄存器快照、内存快照、堆栈调用信息、错误内存地址(即Native崩溃发生时占用的内存地址)、Native崩溃发生时涉及的崩溃指令地址以及崩溃指令等等。其中,该寄存器快照包括Native崩溃发生时各寄存器的信息,内存快照包括Native崩溃发生时设备的内存数据。内存映射文件为Native崩溃对应的内存映射文件,其中记录有Native崩溃发生时的内存映射信息,具体包括Native崩溃发生时内存中各内存块对应的起始地址、终止地址、内存访问权限以及内存块名等。
接着,目标程序解析崩溃转储文件和内存映射文件,得到相应的解析结果,其中,该解析结果包括Native崩溃发生时所真正涉及的崩溃相关信息。之后目标程序从解析结果中提取出用于辅助确定该Native崩溃的崩溃类型的信息,即当前崩溃特征。之后目标程序从对应的预设存储区域读取到预设的多个崩溃类型分别对应的崩溃特征集,其中,各崩溃特征集用于维护相应Native崩溃的崩溃类型对应的崩溃特征;基于当前崩溃特征以及该预设的多个崩溃类型分别对应的崩溃特征,确定出应用原生层所属的目标崩溃类型,进而基于目标崩溃类型确定出对应的用于指示该Native崩溃的辅助分析方向的调试参考信息。
上述过程中,预先存储用于维护不同的应用原生层崩溃的崩溃类型分别对应的崩溃特征集,可以基于该多个崩溃特征集,以及从崩溃转储文件和内存映射文件的解析结果中所确定出的待分析的应用原生层崩溃的当前崩溃特征,能够自动确定出应用原生层崩溃所属的目标崩溃类型,进而确定出对应的用于指示应用原生层崩溃对应的辅助分析方向的调试参考信息。应用原生层崩溃所属的目标崩溃类型的确定过程无需人工参与,解放了人力,降低人工成本,且在一定程度上提供了类型确定准确性,且基于目标崩溃类型确定出用于指示应用原生层崩溃对应的辅助分析方向,直接为用户指明应用原生层崩溃相应的辅助分析方向,在一定程度上可以更好的降低人力消耗,提高分析定位应用原生层崩溃发生原因以及具体情况等的效率。
下面结合具体实施例,对本说明书提供的应用崩溃分析方法及装置进行详细阐述。
图2示出了本说明书一个实施例中应用崩溃分析方法的流程示意图。该方法可以通过目标程序实现。该目标程序可以安装于电子设备中,该电子设备可以通过任何具有计算、处理能力的装置、设备、平台、设备集群等来实现。
可以理解的,对于安装有安卓Android操作系统的设备而言,其在运行其安装的应用程序的过程中,可能会出现应用原生层Native崩溃的问题,设备在发生该Native崩溃时,该设备安装的指定程序会生成一个崩溃转储Tombstone文件,其用于存储该设备发生Native崩溃时的相关系统信息,例如:Native崩溃对应的进程(包括线程)信息(例如导致崩溃发生的进程id和进程名称、线程id和线程名称等)及崩溃信号信息(即引发Native崩溃的信号信息,例如包括信号编码和信号名称)、Native崩溃发生时的寄存器快照、内存快照、堆栈调用信息、错误内存地址(即Native崩溃发生时占用的内存地址)、Native崩溃发生时涉及的崩溃指令地址以及崩溃指令等等。其中,该寄存器快照包括Native崩溃发生时该设备的各寄存器的信息(即寄存器所存储的信息)。内存快照包括Native崩溃发生时的设备的内存数据。
另外,设备在发生该Native崩溃时,还会获取到该设备内存的各内存块的内存映射信息,以形成Native崩溃发生时的内存映射文件。其中内存块的内存映射信息包括:该内存块对应的起始地址、终止地址、内存访问权限以及内存块名等。
通过分析该崩溃转储文件及其对应的系统文件,例如前述的内存映射文件以及日志文件,可以确定出相应的Native崩溃的原因,进而确定出相应的改善措施。
具体的,如图2所示,所述方法包括如下步骤S210-S250:
在步骤S210,获取待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件。
可以理解的,在一种实现中,实现本说明书实施例所提供的应用崩溃分析方法的目标程序,可以被安装于前述的发生Native崩溃的设备内,相应的,目标程序可以从其所在设备的预设存储区域读取到待分析的应用原生层崩溃即Native崩溃对应的崩溃转储文件和内存映射文件。在另一种实现中,实现本说明书实施例所提供的应用原生层崩溃的类型确定方法的目标程序,可以被安装于可以为不同于前述的发生Native崩溃的设备的另一物理设备内;此时,该目标程序可以从该发生Native崩溃的设备中,获取其待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件。
接着在步骤S220,解析崩溃转储文件和内存映射文件,得到解析结果,其中,该解析结果包括应用原生层崩溃发生时所涉及的崩溃相关信息;并在步骤S230,从该解析结果中提取出当前崩溃特征。
具体的,目标程序获取到待分析的Native崩溃对应的崩溃转储文件和内存映射文件之后,可以自动解析崩溃转储文件和内存映射文件,从中确定出包括该待分析的Native崩溃发生时所真正涉及的崩溃相关信息的解析结果。下面对解析崩溃转储文件和内存映射文件(即得到解析结果)的过程以及确定当前崩溃特征的过程进行介绍。
在一个实施例中,该崩溃转储文件可以包括各寄存器的信息(即Native崩溃发生时各寄存器所存储的信息),寄存器可以包括若干第一寄存器,该若干第一寄存器的信息包括内存地址;相应的,在步骤S220,可以包括:从内存映射文件中,确定出各第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息,将其归入解析结果。
本实现方式中,目标程序基于各第一寄存器的信息中的内存地址,可以从内存映射文件中,确定出包括各第一寄存器的信息中的内存地址的各内存块(后续称为各第一内存块),即各第一寄存器对应的各第一内存块;进而,针对每一第一寄存器,从内存映射文件中,确定出该第一寄存器对应的第一内存块的内存映射信息以及该第一内存块前后多个内存块的内存映射信息,作为该第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息。其中,该前后多个内存映射信息例如包括,该第一寄存器所对应第一内存块之前的n/2个内存块的内存映射信息,以及之后的n/2个内存块的内存映射信息。接着,目标程序将各第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息,归入解析结果。其中,n为预设值。
之后,在一个实施例中,在确定出各第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息之后,所述方法还可以包括:对应于各第一寄存器的信息,展示其内存地址所指向内存的内存映射信息及其前后多个内存映射信息。
将各第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息,展示给用户(例如前述的开发人员)可以帮助其清晰明了地确定出各第一寄存器对应的多个内存映射信息,帮助用户对Native崩溃进行相应的分析。在一种实现中,可以以悬浮窗的方式,对应于各第一寄存器的信息,展示其内存地址所指向中内存的内存映射信息及其前后多个内存映射信息。例如,在展示崩溃转储文件时,在其中各第一寄存器的信息对应的指定位置,显示悬浮窗,触发该悬浮窗,可以进入查看相应内存地址所指向内存的内存映射信息及其前后多个内存映射信息的界面。
在一种实现中,目标程序还可以根据各第一寄存器的信息中内存地址,从崩溃转储文件中的内存快照部分处,获取到各第一寄存器的信息中内存地址所指向内存的内存数据及其附近的内存的内存数据,并对应于各第一寄存器的信息,展示该各第一寄存器的信息中内存地址所指向内存的内存数据及其附近的内存的内存数据。其中,第一寄存器的信息中内存地址所指向内存附近的内存可以包括,第一寄存器所指向内存的前a个(内存地址指向的)内存和后b个(内存地址指向的)内存,其中,a和b可以为预设值。
在又一实施例中,前述的寄存器还可以包括程序计数PC(Program Counter)寄存器;相5应的,在步骤S220,可以包括:确定程序计数PC寄存器的信息中应用原生层Native崩溃发
生时的崩溃指令地址,将其归入解析结果;基于该崩溃指令地址,从崩溃转储文件中,确定出崩溃指令地址对应的崩溃指令,将其归入解析结果。之后,在步骤S230,目标程序还可以将崩溃指令地址以及崩溃指令归入当前崩溃特征。可以理解的是,该崩溃指令地址也属于内存地址。
0本实现方式中,该程序计数PC寄存器存储有应用原生层Native崩溃发生时涉及的崩溃
指令(即崩溃发生时正在执行的指令)的地址,即崩溃指令地址;相应的,目标程序可以从PC寄存器中读取出该崩溃指令地址,将其归入解析结果,并且可以继续基于该崩溃指令地址,从崩溃转储文件中(内存快照部分)读取该崩溃指令地址对应的崩溃指令,即崩溃发生时正在执行的指令,将该崩溃指令归入解析结果。
5可以理解的,崩溃指令可以帮助用户实现对Native崩溃发生位置的定位。相应的,在一
个实施例中,所述方法还可以包括如下步骤:基于崩溃指令,生成崩溃指令提示信息。
可以理解的,崩溃转储文件中所存储的崩溃指令一般是以二进制的形式存在的,为了帮助用户可以快速理解崩溃指令的含义,目标程序可以首先将二进制形式的崩溃指令,解析为
汇编语言形式的崩溃指令;之后基于该汇编语言形式的崩溃指令,生成崩溃指令提示信息,0以使得用户可以直接查看到汇编语言形式的崩溃指令,并提醒用户崩溃发生时正在执行的指
令即为该崩溃指令。使得用户无需再从崩溃转储文件的繁杂内容中人力查找该崩溃指令。
在一种实现中,该崩溃指令提示信息可以表现为:目标程序在显示崩溃转储文件时,在其存储该崩溃指令的位置进行高亮显示或者用指定框(例如红色矩形框)标识出存储该崩溃
指令的位置,使得用户可以更加关注该位置。之后对应于该位置处,显示该汇编语言形式的5崩溃指令。在一种实现中,可以以悬浮窗的方式,对应于该崩溃指令的位置,显示该汇编语
言形式的崩溃指令,其中,触发该悬浮窗,可以显示展示该汇编语言形式的崩溃指令的界面。
在又一实施例中,目标程序确定出崩溃指令之后,在步骤S220,还可以包括如下步骤:
解析崩溃指令,得到崩溃指令对应的第一执行动作,以及第一执行动作涉及的寄存器标识;,
将该寄存器标识对应的寄存器及其信息归入解析结果;基于崩溃指令、第一执行动作和第一0执行动作涉及的寄存器标识及其信息,生成崩溃现场信息及其对应的分析建议信息。
目标程序解析得到汇编语言形式的崩溃指令之后,可以继续解析该汇编语言形式的崩溃指令,确定出该崩溃指令对应的动作(称为第一执行动作)及其涉及的寄存器标识。
之后,一方面,目标程序将寄存器标识对应的寄存器及其信息,作为崩溃指令涉及的寄存器及其信息,将其归入解析结果,进一步的将崩溃指令涉及的寄存器及其信息归入当前崩溃特征。另一方面,目标程序基于第一执行动作和第一执行动作涉及的寄存器标识所对应寄存器及其信息,生成崩溃现场信息及其对应的分析建议信息。
其中,该崩溃现场信息可以包括描述Native崩溃发生时正在执行的动作(即第一执行动作)的信息(例如从xx寄存器处读数据和/或写数据,或者从xx寄存器的信息中内存地址处读和/或写数据,或者,从xx寄存器的信息中内存地址偏移yy位的地址处和/或写数据,或者,从xx寄存器中读数据并写入cc寄存器中等等),并且可以包括对第一执行动作和/或第一执行动作涉及的寄存器及其信息是否合法的分析结果。例如,通过崩溃指令提示信息可以确定Native崩溃时正在执行zz指令(汇编语言形式的崩溃指令),崩溃现场信息包括:当前正在基于xx寄存器的信息中内存地址处(或者xx寄存器的信息中内存地址偏移yy位的目标内存地址处)读数据(执行第一执行动作),该内存地址(或者目标内存地址)是非法地址,导致Native崩溃(具体例如:当前正在从r1寄存器的信息中内存地址偏移16位的目标内存地址处取值,这个目标内存地址是非法地址,导致Native崩溃)。相应的,该分析建议信息可以包括:基于崩溃现场信息所给出的对Native崩溃的原因查找方向上的建议。例如:承接前述例子,该分析建议信息可以包括建议用户回溯r1寄存器的内存地址的来源。
接着,在又一实施例中,在步骤S220,还可以包括步骤:若该寄存器标识对应第一寄存器,确定该寄存器标识(即崩溃指令)对应的第一寄存器对应的内存映射信息(即第一寄存器的信息中内存地址所指示内存的内存映射信息),作为应用原生层崩溃发生时涉及的内存映射信息,将其归入解析结果。
在本实现方式中,在确定崩溃指令对应的第一执行动作涉及的寄存器为第一寄存器的情况下,考虑到应用原生层Native崩溃还可能是由于内存块的内存访问权限等原因导致的,则可以继续确定崩溃指令所对应第一寄存器对应的内存映射信息,作为应用原生层Native崩溃发生时涉及的内存映射信息,并将其归入解析结果,进一步的在步骤S230将应用原生层Native崩溃发生时涉及的内存映射信息归入当前崩溃特征。
之后,在一种实现中,在前述的对应于各第一寄存器的信息,展示各第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息时,可以高亮显示该Native崩溃发生时涉及的内存映射信息,或者利用指定框(例如红色矩形框)标识出Native崩溃发生时涉及的内存映射信息所在位置,以使得用户可以重点关注Native崩溃发生时涉及的内存映射信息。
在又一种实现中,目标程序还可以基于第一执行动作和第一执行动作涉及的寄存器及其信息,以及寄存器信息对应的内存映射信息,生成崩溃现场信息及其对应的分析建议信息,例如:生成崩溃现场信息为:Native崩溃时正在从r2寄存器的信息中内存地址处(即对应的内存处)取值,写入r3寄存器的信息中内存地址处;但是基于r2寄存器的信息中内存地址所对应的内存映射信息,确定相应的内存访问权限为可写,导致Native崩溃。相应的,分析建议信息可以包括:建议用户回溯r2寄存器的内存地址的来源。
在一个实施例中,前述的寄存器还可以包括链接lr(Link Register)寄存器;相应的,在步骤S220,还可以包括如下步骤:基于链接寄存器的信息中崩溃指令之前的第一指令的第一指令地址,从崩溃转储文件中,确定出第一指令,将第一指令归入解析结果。
本实现方式中,前述的寄存器还可以包括链接寄存器,该链接寄存器可以存储有崩溃指令前c步所执行的指令(即第一指令)的地址(即第一指令地址),以使得在确定运行出错(即Native崩溃发生时)可以退回执行第一指令地址处的第一指令,以更正运行错误。本实现方式中,目标程序还可以基于链接寄存器的信息中崩溃指令之前的第一指令的第一指令地址(该第一指令地址也属于内容地址),从崩溃转储文件中,确定出第一指令,之后将第一指令归入解析结果。之后,基于第一指令,生成第一指令提示信息,以提醒用户关注该第一指令,帮助其对Native崩溃进行分析。在一种实现中,该第一指令提示信息可以表现为:目标程序在显示崩溃转储文件时,在其存储该第一指令的位置进行高亮显示或者用指定框(例如红色矩形框)标识出存储该第一指令的位置,使得用户可以更加关注该位置,起到提示作用。
在又一种实现中,从崩溃转储文件中直接提取出的第一指令为二进制形式的第一指令,为了方便用户的查看和理解,目标程序可以将二进制形式的第一指令转义为汇编语言形式的第一指令,并对应于二进制形式的第一执行展示该汇编语言形式的第一指令。其中,一种情况中,可以在崩溃转储文件的二进制形式的第一指令所在位置对应的特定位置处,以悬浮窗的方式,展示该汇编语言形式的第一指令。
在又一实施例中,目标程序可以直接解析崩溃转储文件,从其中读取出应用原生层Native崩溃对应的崩溃信号信息,错误内存地址,若确定崩溃转储文件包含中止信息即abort message的内容,从崩溃转储文件读取出该中止信息,之后,将Native崩溃对应的崩溃信号信息、错误内存地址以及中止信息归入解析结果,进而归入当前崩溃特征。其中,该崩溃信号信息可以包括崩溃信号的信号编码以及信号名称。在一种实现中,在显示崩溃转储文件时,可以在其存储该崩溃信号信息、错误内存地址以及中止信息的位置进行高亮显示或者用指定框(例如红色矩形框)标识出存储该崩溃信号信息、错误内存地址以及中止信息令的位置,使得用户可以更加关注相应的位置。
相应的,在一个实施例中,该当前崩溃特征可以包括如下信息中的至少一个:应用原生5层崩溃对应的崩溃信号信息、应用原生层崩溃发生时涉及的内存映射信息、崩溃指令、崩溃
指令地址、错误内存地址、崩溃指令涉及的寄存器的信息以及中止信息。
在一个实施例中,在该当前崩溃特征中包括中止信息的情况下,可以确定还需要结合日志文件确定分析Native崩溃的原因,进而确定出相应的解决措施;相应的,为了使得用户可
以快速查看到相应的日志文件,提高用户针对日志文件的查看效率,进一步的提高Native崩0溃原因的确定效率。所述方法还可以包括:生成并展示日志文件查看入口,通过日志文件查
看入口可查看应用原生层崩溃对应的日志文件,该日志文件包括应用原生层崩溃发生时的相应操作记录数据。在一种实现中,可以在展示崩溃转储文件的界面的指定位置展示该日志文件查看入口。
基于前述方式,确定出当前崩溃特征之后,在步骤S240,基于当前崩溃特征以及预设的5多个崩溃类型分别对应的崩溃特征集,确定该应用原生层崩溃所属的目标崩溃类型,其中,
所述崩溃特征集用于维护不同的应用原生层崩溃的崩溃类型各自对应的崩溃特征。
目标程序对应的预设存储区域可以预先存储有多个崩溃类型分别对应的崩溃特征集,目标程序从预设存储区域读取到多个崩溃类型分别对应的崩溃特征集,并将当前崩溃特征与多
个崩溃类型分别对应的崩溃特征集进行比对,将匹配的崩溃特征集所对应的崩溃类型,确定0为该应用原生层崩溃所属的目标崩溃类型。
可以理解的,不同崩溃类型对应的崩溃特征集中所包括的崩溃特征的类型和/或特征值可以存在不同,例如:崩溃类型为程序计数pc(寄存器)跑飞时,其对应的崩溃特征集中的崩溃特征可以包括:1、崩溃信号的信号名称为SIGBUS,信号code(编码)为BUS_ADRALN;
2、pc寄存器的信息中崩溃指令地址与错误内存地址相同。又例如:崩溃类型为Suspend超时5时,其对应的崩溃特征集中的崩溃特征可以包括:1、崩溃信号的信号名称为SIGSTKFLT。
又例如:崩溃类型为栈溢出时,其对应的崩溃特征集中的崩溃特征可以包括:1、崩溃信号的信号名称为SIGSEGV;2、崩溃指令正在操作堆栈指针SP(StackPointer)寄存器附近的内存(即SP寄存器的信息中内存地址所指向内存附近的内存);3、SP寄存器的信息中内存地址
对应的内存访问权限是不可读不可写。又例如:崩溃类型为内存权限错误,其对应的崩溃特0征集中的崩溃特征可以包括:1、崩溃信号的信号名称为SIGSEGV;2、错误内存地址对应的内存访问权限为可读可执行不可写。又例如,崩溃类型为文件描述符FD泄露,其对应的崩溃特征集中的崩溃特征可以包括:1、崩溃信号的信号名称为SIGABORT;2、中止信息即abort message的内容为:“FORTIFY:FD_SET:file descriptor xxx>=FD_SETSIZExxx”。
其中可以理解的,前述的寄存器还可以包括堆栈指针SP寄存器,该SP寄存器的信息包括:Native发生时涉及的堆栈调用地址,属于内存地址。相应的,各第一寄存器中包括SP寄存器,相应的,在确定各第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息的过程,即确定出了SP寄存器对应的内存映射信息及其前后多个内存映射信息,并且确定出SP寄存器的信息中内存地址所指向内存及其附近的内存(例如前后多个内存)。
以上崩溃类型及其对应的崩溃特征集仅为举例说明,并不构成对Native崩溃的崩溃类型及其对应的崩溃特征集的限定,实际中Native崩溃所属类型还可以包括其他多种类型,其他多种类型均对应有相应的崩溃特征集(用于维护Native崩溃的其他多种类型各自对应的崩溃特征),在此不再一一举例赘述。
考虑到不同的崩溃类型可以对应有不同的分析方式,为了保证用户可以更高效地确定出所发生的Native崩溃的原因和具体情况并确定出解决措施,在步骤S250,基于目标崩溃类型,确定对应的调试参考信息,其中,该调试参考信息用于指示应用原生层崩溃对应的辅助分析方向。
可以理解的是,不同的崩溃类型可以对应有不同的分析方式,为了更快速地准确确定出Native崩溃的原因和具体情况,提高Native崩溃的分析效率,目标程序对应的预设存储区域可以预先存储有多个崩溃类型对应的调试参考信息,不同的调试参考信息用于指示Native崩溃对应的不同的辅助分析方向。相应的,目标程序在确定出待分析的Native崩溃所属的目标崩溃类型之后,可以从预设存储区域确定出目标崩溃类型对应的调试参考信息,并展示给用户,以提示用户可以采用相应的分析方式,辅助分析确定Native崩溃的原因以具体情况。
举例而言,崩溃类型为程序计数pc(寄存器)跑飞时,其对应的调试参考信息可以为:查看链接lr寄存器的信息中第一指令地址所指向内存附近内存的信息,关注保存跳转地址的寄存器。又例如:崩溃类型为Suspend超时,其对应的调试参考信息可以为:gc(Garbage Collection,垃圾回收)时等待线程suspend超时;查看是否存在锁死情况或者崩溃指令是否正在执行耗时操作,可延长gc suspend等待时间,以解决此类问题。又例如:崩溃类型为栈溢出,其对应的调试参考信息可以为:栈溢出问题,查看栈帧层数是否过深。又例如:崩溃类型为内存权限错误,其对应的调试参考信息可以为:内存权限异常:可能是内存权限被错误修改为可读可执行不可写,可使用mprotect监控排查此类问题。又例如,崩溃类型为FD泄露,其对应的调试参考信息可以为:FD泄露:可以接入FD泄露监控来排查此类问题。等等。
本实施例,预先存储用于维护不同的应用原生层崩溃的崩溃类型分别对应的崩溃特征集,可以基于该多个崩溃特征集,以及从崩溃转储文件和内存映射文件的解析结果中所确定出的待分析的应用原生层崩溃的当前崩溃特征,能够自动确定出应用原生层崩溃所属的目标崩溃类型,进而确定出对应的用于指示应用原生层崩溃对应的辅助分析方向的调试参考信息。应用原生层崩溃所属的目标崩溃类型的确定过程无需人工参与,解放了人力,降低人工成本,且在一定程度上提供了类型确定准确性,且基于目标崩溃类型确定出用于指示应用原生层崩溃对应的辅助分析方向,直接为用户指明应用原生层崩溃相应的辅助分析方向,在一定程度上可以更好的降低人力消耗,提高分析定位应用原生层崩溃发生原因以及具体情况等的效率。
并且,可以将Native崩溃真正涉及的信息以及真正能够帮助确定Native崩溃的原因的信息对用户进行提示展示,例如:各第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息、崩溃指令、崩溃指令地址、第一指令等,以提高用户对相应信息的关注度,可以避免用户人力从崩溃转储文件以及内存映射文件中关联查找出上述信息,降低了人力消耗。
下面通过一个实施例,介绍基于本说明书实施例提供的应用崩溃分析确定流程所确定出的应用原生层崩溃所属的目标崩溃类型等解析结果的使用过程:
若基于前述的应用崩溃分析流程所确定出的应用原生层Native崩溃所属的目标崩溃类型为访问了错误的内存(地址)导致Native崩溃。之后用户需要继续确定访问了哪个错误的内存导致的Native崩溃等具体原因。
具体的,用户可以接着查看基于目标崩溃类型所确定的调试参考信息,其中调试参考信息例如包括,提示用户这类崩溃需要查看崩溃转储文件中的堆栈指针信息的信息。
相应的用户查看堆栈调用信息,用户查看堆栈调用信息之后,发现无法定位到Native崩溃的具体原因,用户可以继续查看崩溃现场信息,崩溃指令及其前后的指令(即查看pc寄存器的信息中崩溃指令地址对应的崩溃指令及其附近的指令);相应的,可以了解到Native崩溃发生时正在执行崩溃指令,例如为ldr r0[r1,#16],当前正在从r1寄存器指向的地址(即r1寄存器的信息中内存地址)偏移16位的目标内存地址处取值,但目标内存地址是非法地址,所以导致了Native崩溃的发生。用户接着可以查看崩溃现场信息对应的分析建议信息,其中,分析建议信息包括提示用户可以回溯r1寄存器指向的地址的来源。
相应的,用户可以继续寻找r1寄存器指向的地址的来源,发现r1寄存器的信息中实际是函数的参数,也就是说调用函数时传入r1寄存器的参数值是错误的。之后用户可以根据这些信息去检查引发Native崩溃发生的相关代码,最终定位到Native崩溃的具体原因以及具体情况。
上述内容对本说明书的特定实施例进行了描述,其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行,并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的,或者可能是有利的。
相应于上述方法实施例,本说明书实施例,提供了一种应用崩溃分析装置300,其示意性框图如图3所示,包括:
第一获取模块310,配置为获取待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件;
第一解析模块320,配置为解析所述崩溃转储文件和所述内存映射文件,得到解析结果,其中,所述解析结果包括所述应用原生层崩溃发生时所涉及的崩溃相关信息;
第一确定模块330,配置为从所述解析结果中提取出当前崩溃特征;
第二确定模块340,配置为基于所述当前崩溃特征以及预设的多个崩溃类型分别对应的崩溃特征集,确定所述应用原生层崩溃所属的目标崩溃类型,其中,所述崩溃特征集用于维护不同的应用原生层崩溃的崩溃类型各自对应的崩溃特征;
第三确定模块350,配置为基于所述目标崩溃类型,确定对应的调试参考信息,其中,所述调试参考信息用于指示应用原生层崩溃对应的辅助分析方向。
在一种可选实施方式中,所述当前崩溃特征包括:所述应用原生层崩溃对应的崩溃信号信息、所述应用原生层崩溃发生时涉及的内存映射信息、崩溃指令、崩溃指令地址、错误内存地址、所述崩溃指令涉及的寄存器的信息以及中止信息中的至少一个。
在一种可选实施方式中,所述崩溃转储文件包括各寄存器的信息,所述寄存器包括若干第一寄存器;
所述第一解析模块320,具体配置为从所述内存映射文件中,确定出各第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息,归入所述解析结果;
所述装置还包括:
展示模块(图中未示出),配置为对应于各第一寄存器的信息,展示其内存地址所指向内存的内存映射信息及其前后多个内存映射信息。
在一种可选实施方式中,所述寄存器包括程序计数寄存器;
所述第一解析模块320,具体配置为确定所述程序计数寄存器的信息中所述应用原生层崩溃发生时的崩溃指令地址,将其归入所述解析结果;
基于所述崩溃指令地址,从所述崩溃转储文件中,确定出所述崩溃指令地址对应的崩溃指令,将其归入所述解析结果;
所述第一确定模块330,具体配置为将所述崩溃指令地址以及所述崩溃指令归入所述当前崩溃特征。
在一种可选实施方式中,还包括:
第一生成模块(图中未示出),配置为基于所述崩溃指令,生成崩溃指令提示信息。
在一种可选实施方式中,还包括:
第二解析模块(图中未示出),配置为解析所述崩溃指令,得到所述崩溃指令对应的第一执行动作,以及所述第一执行动作涉及的寄存器标识,将该寄存器标识对应的寄存器及其信息归入所述解析结果;
第二生成模块(图中未示出),配置为基于所述第一执行动作和所述第一执行动作涉及的寄存器标识所对应寄存器及其信息,生成崩溃现场信息及其对应的分析建议信息。
在一种可选实施方式中,还包括:
确定归入模块(图中未示出),配置为若所述寄存器标识对应第一寄存器,确定所述第一寄存器对应的内存映射信息,作为所述应用原生层崩溃发生时涉及的内存映射信息,将其归入所述解析结果;
所述第一确定模块330,具体配置为将所述第一执行动作所涉及的寄存器及其信息以及所述应用原生层崩溃发生时涉及的内存映射信息,归入所述当前崩溃特征。
在一种可选实施方式中,所述寄存器还包括链接寄存器;
所述第一解析模块320,具体配置为基于所述链接寄存器的信息中所述崩溃指令之前的第一指令的第一指令地址,从所述崩溃转储文件中,确定出所述第一指令,将所述第一指令归入所述解析结果;
所述装置还包括:
第三生成模块(图中未示出),配置为基于所述第一指令,生成第一指令提示信息。
在一种可选实施方式中,在所述当前崩溃特征中包括所述中止信息的情况下;所述装置还包括:
生成展示模块(图中未示出),配置为生成并展示日志文件查看入口,通过所述日志文件查看入口可查看所述应用原生层崩溃对应的日志文件。
在一种可选实施方式中,所述第三确定模块350,具体配置为基于所述目标崩溃类型,以及预设的多个崩溃类型分别对应的调试参考信息,确定出所述目标崩溃类型对应的调试参考信息。
上述装置实施例与方法实施例相对应,具体说明可以参见方法实施例部分的描述,此处不再赘述。装置实施例是基于对应的方法实施例得到,与对应的方法实施例具有同样的技术效果,具体说明可参见对应的方法实施例。
下面参考图4,其示出了适于用来实现本说明书实施例的电子设备400的结构示意图。图4示出的电子设备仅仅是一个示例,不应对本说明书实施例的功能和使用范围带来任何限制。
如图4所示,电子设备400可以包括处理装置(例如中央处理器、图形处理器等)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储装置408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有电子设备400操作所需的各种程序和数据。处理装置401、ROM 402以及RAM403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。
通常,以下装置可以连接至I/O接口405:包括例如触摸屏、触摸板、键盘、鼠标等的输入装置406;包括例如液晶显示器(LCD,Liquid Crystal Display)、扬声器、振动器等的输出装置407;包括例如磁带、硬盘等的存储装置408;以及通信装置409。通信装置409可以允许电子设备400与其他设备进行无线或有线通信以交换数据。虽然图4示出了具有各种装置的电子设备400,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图4中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本说明书的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本说明书的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置409从网络上被下载和安装,或者从存储装置408被安装,或者从ROM 402被安装。在该计算机程序被处理装置401执行时,执行本说明书的实施例的方法中限定的上述功能。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书所提供的应用崩溃分析方法。
需要说明的是,本说明书的实施例所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本说明书的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本说明书的实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(Radio Frequency,射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件;解析所述崩溃转储文件和所述内存映射文件,得到解析结果,其中,所述解析结果包括所述应用原生层崩溃发生时所涉及的崩溃相关信息;从所述解析结果中提取出当前崩溃特征;基于所述当前崩溃特征以及预设的多个崩溃类型分别对应的崩溃特征集,确定所述应用原生层崩溃所属的目标崩溃类型,其中,所述崩溃特征集用于维护不同的应用原生层崩溃的崩溃类型各自对应的崩溃特征;基于所述目标崩溃类型,确定对应的调试参考信息,其中,所述调试参考信息用于指示应用原生层崩溃对应的辅助分析方向。
可以以一种或多种程序设计语言或其组合来编写用于执行本说明书实施例的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于存储介质和计算设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步的详细说明。所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (12)
1.一种应用崩溃分析方法,包括:
获取待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件;
解析所述崩溃转储文件和所述内存映射文件,得到解析结果,其中,所述解析结果包括所述应用原生层崩溃发生时所涉及的崩溃相关信息;
从所述解析结果中提取出当前崩溃特征;
基于所述当前崩溃特征以及预设的多个崩溃类型分别对应的崩溃特征集,确定所述应用原生层崩溃所属的目标崩溃类型,其中,所述崩溃特征集用于维护不同的应用原生层崩溃的崩溃类型各自对应的崩溃特征;
基于所述目标崩溃类型,确定对应的调试参考信息,其中,所述调试参考信息用于指示所述应用原生层崩溃对应的辅助分析方向。
2.如权利要求1所述的方法,其中,所述当前崩溃特征包括:所述应用原生层崩溃对应的崩溃信号信息、所述应用原生层崩溃发生时涉及的内存映射信息、崩溃指令、崩溃指令地址、错误内存地址、所述崩溃指令涉及的寄存器的信息以及中止信息中的至少一个。
3.如权利要求1所述的方法,其中,所述崩溃转储文件包括各寄存器的信息,所述寄存器包括若干第一寄存器;
所述解析所述崩溃转储文件和所述内存映射文件,包括:
从所述内存映射文件中,确定出各第一寄存器的信息中内存地址所指向内存的内存映射信息及其前后多个内存映射信息,将其归入所述解析结果;
所述方法还包括:
对应于各第一寄存器的信息,展示其内存地址所指向内存的内存映射信息及其前后多个内存映射信息。
4.如权利要求3所述的方法,其中,所述寄存器包括程序计数寄存器;
所述解析所述崩溃转储文件和所述内存映射文件,包括:
确定所述程序计数寄存器的信息中所述应用原生层崩溃发生时的崩溃指令地址,将其归入所述解析结果;
基于所述崩溃指令地址,从所述崩溃转储文件中,确定出所述崩溃指令地址对应的崩溃指令,将其归入所述解析结果;
所述确定当前崩溃特征,包括:
将所述崩溃指令地址以及所述崩溃指令归入所述当前崩溃特征。
5.如权利要求4所述的方法,还包括:
基于所述崩溃指令,生成崩溃指令提示信息。
6.如权利要求4所述的方法,还包括:
解析所述崩溃指令,得到所述崩溃指令对应的第一执行动作,以及所述第一执行动作涉及的寄存器标识,将该寄存器标识对应的寄存器及其信息归入所述解析结果;
基于所述第一执行动作和所述第一执行动作涉及的寄存器标识所对应寄存器及其信息,生成崩溃现场信息及其对应的分析建议信息。
7.如权利要求6所述的方法,还包括:
若所述寄存器标识对应第一寄存器,确定所述第一寄存器对应的内存映射信息,作为所述应用原生层崩溃发生时涉及的内存映射信息,将其归入所述解析结果;
所述确定当前崩溃特征,包括:
将所述第一执行动作所涉及的寄存器及其信息以及所述应用原生层崩溃发生时涉及的内存映射信息,归入所述当前崩溃特征。
8.如权利要求4所述的方法,其中,所述寄存器还包括链接寄存器;
所述解析所述崩溃转储文件和所述内存映射文件,包括:
基于所述链接寄存器的信息中所述崩溃指令之前的第一指令的第一指令地址,从所述崩溃转储文件中,确定出所述第一指令,将所述第一指令归入所述解析结果;
所述方法还包括:
基于所述第一指令,生成第一指令提示信息。
9.如权利要求2所述的方法,其中,在所述当前崩溃特征中包括所述中止信息的情况下;所述方法还包括:
生成并展示日志文件查看入口,通过所述日志文件查看入口可查看所述应用原生层崩溃对应的日志文件。
10.如权利要求1所述的方法,其中,所述确定对应的调试参考信息,包括:
基于所述目标崩溃类型,以及预设的多个崩溃类型分别对应的调试参考信息,确定出所述目标崩溃类型对应的调试参考信息。
11.一种应用崩溃分析装置,包括:
第一获取模块,配置为获取待分析的应用原生层崩溃对应的崩溃转储文件和内存映射文件;
第一解析模块,配置为解析所述崩溃转储文件和所述内存映射文件,得到解析结果,其中,所述解析结果包括所述应用原生层崩溃发生时所涉及的相应信息;
第一确定模块,配置为从所述解析结果中提取出当前崩溃特征;
第二确定模块,配置为基于所述当前崩溃特征以及预设的多个崩溃类型分别对应的崩溃特征集,确定所述应用原生层崩溃所属的目标崩溃类型,其中,所述崩溃特征集用于维护不同的应用原生层崩溃的崩溃类型各自对应的崩溃特征;
第三确定模块,配置为基于所述目标崩溃类型,确定对应的调试参考信息,其中,所述调试参考信息用于指示应用原生层崩溃对应的辅助分析方向。
12.一种电子设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211535752.9A CN115756934A (zh) | 2022-12-02 | 2022-12-02 | 一种应用崩溃分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211535752.9A CN115756934A (zh) | 2022-12-02 | 2022-12-02 | 一种应用崩溃分析方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115756934A true CN115756934A (zh) | 2023-03-07 |
Family
ID=85342577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211535752.9A Pending CN115756934A (zh) | 2022-12-02 | 2022-12-02 | 一种应用崩溃分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115756934A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116775501A (zh) * | 2023-08-25 | 2023-09-19 | 荣耀终端有限公司 | 一种软件测试方法、服务器、可读存储介质及芯片系统 |
-
2022
- 2022-12-02 CN CN202211535752.9A patent/CN115756934A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116775501A (zh) * | 2023-08-25 | 2023-09-19 | 荣耀终端有限公司 | 一种软件测试方法、服务器、可读存储介质及芯片系统 |
CN116775501B (zh) * | 2023-08-25 | 2023-12-12 | 荣耀终端有限公司 | 一种软件测试方法、服务器、可读存储介质及芯片系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284269B (zh) | 异常日志分析方法、装置、存储介质及服务器 | |
CN107506300B (zh) | 一种用户界面测试方法、装置、服务器和存储介质 | |
CN108388514B (zh) | 接口自动化测试方法、装置、设备及计算机可读存储介质 | |
CN108170465B (zh) | 一种版本信息管理方法、电子设备及可读存储介质 | |
CN110955409B (zh) | 在云平台上创建资源的方法和装置 | |
CN112100072A (zh) | 应用程序代码的静态检测方法、装置、设备及介质 | |
CN110659210A (zh) | 一种信息获取方法、装置、电子设备及存储介质 | |
CN113032215A (zh) | 线程快照解析方法、装置、设备和存储介质 | |
CN112817831A (zh) | 应用性能监测方法、装置、计算机系统和可读存储介质 | |
CN110597704B (zh) | 应用程序的压力测试方法、装置、服务器和介质 | |
CN115756934A (zh) | 一种应用崩溃分析方法及装置 | |
CN110688173B (zh) | 一种跨平台界面框架中组件的定位方法、装置及电子设备 | |
CN114218072A (zh) | 测试脚本生成方法、装置、存储介质及计算机设备 | |
CN111274130A (zh) | 一种自动化测试方法、装置、设备及存储介质 | |
CN113656301A (zh) | 一种接口测试方法、装置、设备及存储介质 | |
CN110908882A (zh) | 一种应用程序的性能分析方法、装置、终端设备及介质 | |
CN111741046B (zh) | 数据上报方法、获取方法、装置、设备及介质 | |
CN111274143B (zh) | 埋点测试方法、装置、设备及存储介质 | |
CN110991147B (zh) | 一种字体检测方法、装置、电子设备及存储介质 | |
CN114356290A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN111027073B (zh) | 漏洞检测方法、装置、设备及存储介质 | |
CN111813695A (zh) | 代码检测方法、装置、介质及电子设备 | |
CN113760631A (zh) | 页面加载时长确定方法、装置、设备和存储介质 | |
CN110955595A (zh) | 问题修复方法、装置、电子设备及计算机可读存储介质 | |
CN113986517B (zh) | Api调用日志采集方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |