CN108073495B - 应用程序崩溃原因的定位方法及装置 - Google Patents

应用程序崩溃原因的定位方法及装置 Download PDF

Info

Publication number
CN108073495B
CN108073495B CN201611031557.7A CN201611031557A CN108073495B CN 108073495 B CN108073495 B CN 108073495B CN 201611031557 A CN201611031557 A CN 201611031557A CN 108073495 B CN108073495 B CN 108073495B
Authority
CN
China
Prior art keywords
positioning information
function
determining
crash
information set
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.)
Active
Application number
CN201611031557.7A
Other languages
English (en)
Other versions
CN108073495A (zh
Inventor
朱辉云
胡育辉
陈焕葵
张少愚
覃竞才
曾岳锋
陈云云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201611031557.7A priority Critical patent/CN108073495B/zh
Publication of CN108073495A publication Critical patent/CN108073495A/zh
Application granted granted Critical
Publication of CN108073495B publication Critical patent/CN108073495B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种应用程序崩溃原因的定位方法及装置,属于计算机技术领域。该方法包括:根据应用程序的崩溃记录文件,确定应用程序崩溃之前所运行的代码中具有导致崩溃可能性的第一定位信息集合;根据预设的系统函数或语句类型与错误类型之间的对应关系对应用程序的源文件进行分析,得到源文件中具有导致崩溃可能性第二定位信息集合;将第一定位信息集合与第二定位信息集合进行匹配,根据匹配结果,确定实际导致崩溃目标定位信息集合。通过根据预设经验规则对崩溃记录文件和源文件进行综合分析,便可得到导致崩溃的实际代码位置,使得开发人员无需进行人工干预便可完成对崩溃原因的准确定位,大大缩减了定位所需的时间,提高了开发效率。

Description

应用程序崩溃原因的定位方法及装置
技术领域
本发明涉及计算机技术领域,特别涉及一种应用程序崩溃原因的定位方法及装置。
背景技术
在应用程序测试时或者线上运行的过程中,可能会由于各种原因导致应用程序崩溃,使得应用程序停止工作。为了使应用程序能够正常运行,开发人员通常需要定位导致应用程序崩溃的代码位置,从而获知导致崩溃的原因。
现有技术中,当应用程序崩溃时,终端系统会生成一个崩溃记录文件,该崩溃记录文件是一个二进制文件,其中记录了应用程序崩溃时的内存映像,比如应用程序中数据或函数的存储地址、函数调用的上下文信息等。在Linux系统中开发人员可以采用gdb调试工具来对该崩溃记录文件进行分析,从而定位导致应用程序崩溃的代码位置,具体过程可以为:开发人员在gdb调试工具中输入崩溃记录文件的读取命令,使得gdb读取该崩溃记录文件;接下来,开发人员通过输入where命令来定位发生崩溃时应用程序所运行的代码位置;然后开发人员基于该发生崩溃时所运行的代码位置在gdb调试工具中输入堆栈打印命令,以使gdb调试工具输出与发生崩溃的代码位置相关的堆栈信息,该堆栈信息用于指示发生崩溃之前应用程序的函数调用关系。开发人员可以根据自己的经验和堆栈信息,猜测可能出错的代码位置,并通过人工排查的方式对相应的源代码进行分析,以定位可能导致崩溃的代码位置,从而获知应用程序的崩溃原因。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
对崩溃原因进行定位的过程中需要依靠开发人员不断进行人工干预,例如在不同的阶段输入各种命令,使得gdb调试工具来执行相应操作,并且开发人员还要不断地查看源代码并对源代码进行人工分析,使得定位过程耗时长,且开发效率低。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种应用程序崩溃原因的定位方法及装置。所述技术方案如下:
一方面,提供了一种应用程序崩溃原因的定位方法,所述方法包括:
根据应用程序的崩溃记录文件,确定第一定位信息集合,所述第一定位信息集合用于指示所述应用程序崩溃之前所运行的代码中具有导致崩溃可能性的代码位置;
根据预设的系统函数或语句类型与错误类型之间的对应关系,对所述应用程序的源文件进行分析,得到第二定位信息集合,所述第二定位信息集合用于指示所述源文件中具有导致崩溃可能性的代码位置;
将所述第一定位信息集合与所述第二定位信息集合进行匹配,根据匹配结果,确定目标定位信息集合,所述目标定位信息集合用于指示导致崩溃的实际代码位置。
另一方面,提供了一种应用程序崩溃原因的定位装置,所述装置包括:
确定模块,用于根据应用程序的崩溃记录文件,确定第一定位信息集合,所述第一定位信息集合用于指示所述应用程序崩溃之前所运行的代码中具有导致崩溃可能性的代码位置;
分析模块,用于根据预设的系统函数或语句类型与错误类型之间的对应关系,对所述应用程序的源文件进行分析,得到第二定位信息集合,所述第二定位信息集合用于指示所述源文件中具有导致崩溃可能性的代码位置;
匹配模块,用于将所述第一定位信息集合与所述第二定位信息集合进行匹配,根据匹配结果,确定目标定位信息集合,所述目标定位信息集合用于指示导致崩溃的实际代码位置。
本发明实施例提供的技术方案带来的有益效果是:
通过根据崩溃记录文件,确定应用程序崩溃之前所运行代码中具有导致崩溃可能性的第一定位信息集合,还能够根据预设经验规则对源文件进行分析,得到指示源文件中具有导致崩溃可能性的第二定位信息集合,并通过对第一定位信息集合和第二定位信息集合的综合分析,便可得到导致崩溃的实际代码位置,使得开发人员无需进行人工干预便可完成对崩溃原因的准确定位,大大缩减了定位所需的时间,提高了开发效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种应用程序崩溃原因的定位方法的流程图;
图2是本发明实施例提供的一种应用程序崩溃原因的定位的系统流程图;
图3是本发明实施例提供的一种应用程序崩溃原因的定位装置的框图;
图4是本发明实施例提供的一种终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了解决现有技术的问题,本发明实施例中,终端可以自动对应用程序的崩溃记录文件进行分析,并结合预设的系统函数或语句类型与错误类型之间的对应关系对应用程序的源文件进行分析,从而定位实际导致应用程序崩溃的代码位置,详细过程参见图1。
图1是本发明实施例提供的一种应用程序崩溃原因的定位方法的流程图,参见图1,本发明实施例提供的方法流程包括:
101、根据应用程序的崩溃记录文件,确定应用程序崩溃时的函数调用关系链和所运行的代码位置,函数调用关系链用于指示函数的调用顺序。
终端可以根据预设存储路径,获取崩溃记录文件,该预设存储路径可由终端根据开发人员的设置操作进行配置。其中,崩溃记录文件可以具有指定的文件后缀名,终端将预设存储路径中具有该指定文件后缀名的文件确定为崩溃记录文件,从而获取该崩溃记录文件。另外,开发人员也可以手动选取需要的崩溃记录文件,使得终端获取到该崩溃记录文件。
当然,如果终端没有获取到崩溃记录文件,终端可以提示崩溃记录文件获取失败。此外,终端还可以检测导致崩溃记录文件获取失败的原因,比如,终端检测到没有开启生成崩溃记录文件的功能,或者设置的崩溃记录文件的大小不足,或者预设存储路径的读取权限没有开放等。终端可以针对不同获取失败的原因自行解决相应的问题,比如终端检测到没有开启生成崩溃记录文件的功能时,便开启生成崩溃记录文件的功能等。终端也可以向开发人员提示获取失败的原因,由开发人员手动解决相应的问题。
其中,崩溃记录文件记录了应用程序崩溃时的内存映像,比如应用程序中数据或函数的存储地址、函数调用的上下文信息等。终端具有对该崩溃记录文件进行分析的功能,终端可以根据该崩溃记录文件确定应用程序崩溃时的堆栈信息和所运行的代码位置。终端根据该堆栈信息可以确定应用程序的函数调用关系链。例如,该函数调用关系链可以为A->B->C->D->E,则说明函数A调用函数B,函数B调用函数C,函数C调用函数D,函数D调用函数E。
102、在函数调用关系链中,以该代码位置所指示的函数为起点进行回溯,确定第一函数,将第一函数的位置信息确定为第一定位信息,该第一函数为回溯过程中的第一个非系统函数。
其中,系统函数是指编程语言自带的具有基础功能的函数,例如,print(打印输出函数)、open(打开文件函数)、close(关闭文件函数)、fwrite(向文件写入数据函数)、abs(取绝对值函数)等。需要说明的是,不同的编程语言可以对应不同的系统函数。非系统函数是指除了系统函数以外的函数,通常情况下表示由开发人员编写的函数。系统函数是由编程语言的设计者经过大量实验验证过的,因此,通常认为系统函数本身不会发生错误。因此,本实施例中将在函数调用关系链中的第一个非系统函数(即第一函数)确定为具有导致崩溃可能性的代码位置。
其中,回溯所指示的方向是指函数调用关系链中该代码位置所指示的函数被调用的方向。确定第一函数的过程为:终端判断该代码位置所指示函数是否为系统函数,如果是则,向被调用的方向获取下一个函数,并判断该下一个函数是否为系统函数,如果是,则继续获取下一个函数,直至获取到第一非系统函数为止。具体地,终端可以预先存储一个系统函数列表,该系统函数列表用于存储多个系统函数的函数名。对于函数调用关系链中的函数,如果终端在系统函数列表中查找到该函数的函数名,则确定该函数为系统该函数,如果在系统函数列表中没有查找到该函数的函数名,则确定该函数为非系统函数。
例如,该代码位置所指示的函数为函数E,函数调用关系链A->B->C->D->E中函数E和函数D为系统函数,函数C为非系统函数,回溯是指E到A所指示的方向,则终端便可在回溯的过程中确定函数C即为第一函数,并将函数C的位置信息确定为第一定位信息。
本实施例中,函数的位置信息用于指示函数所在的源文件名、函数的函数名。此外,函数的位置信息还可以用于指示函数在源文件中的行号。
103、根据第一函数,在函数调用关系链中确定第一预设数目的第二函数,第二函数是指函数调用关系链位于第一函数之后的函数。
需要说明的是,虽然通常认为系统函数本身不会发生错误,但是开发人员在采用其他函数调用系统函数时,很可能由于调用方式有误而导致崩溃。比如,在调用系统函数时,传入参数的格式不对等。因此,为了使定位结果更加全面,本实施例中还会将第一函数调用的系统该函数确定为具有导致崩溃可能性的代码位置。
其中,在函数调用关系链中位于第一函数之后的函数是指第一函数直接或间接调用的函数。由步骤102可知,第一函数为函数调用关系链中第一个非系统函数,因此,第二函数是指函数调用关系链中位于第一函数之后的系统函数。
其中,第一预设数目可以进行预先设置或更改,本发明实施例对此不作限定。比如,函数调用关系链仍然为A->B->C->D->E,第一函数为函数C,则当预设数目为2时,终端便可以根据函数调用关系链确定位于第一函数之后的第二函数为函数D和函数E。需要说明的是,终端在确定第二函数时,按照函数调用关系链所指示的顺序,以第一函数为起点,依次获取第二函数,直至获取到第一预设数目的第二函数。例如,当预设数目为1时,终端便获取函数D为第二函数。需要说明的是,如果第一函数之后的函数个数小于第一预设数目,则终端将函数调用关系链中第一函数之后的所有函数确定为第二函数。
104、对于每个第二函数,根据该第二函数在系统函数与错误类型的对应关系中进行查询,将查询得到的错误类型和第二函数的位置信息确定为第一定位信息。
为了更加细粒度的定位导致应用程序崩溃的原因,本发明实施例还可以定位可能导致崩溃的函数的错误类型。具体地,开发人员可以在函数层面上对经常遇到的导致应用程序崩溃的情况进行统计,比如,对由系统函数调用错误而导致崩溃的情况进行统计,将统计结果进行归纳,形成多条经验规则项。每条经验规则项可以用于指示系统函数与错误类型之间的对应关系,使得终端可以根据预设好的多条经验规则项对第二函数进行分析,以确定第二函数的错误类型。
其中,系统函数用于指示系统函数名、参数位置和参数类型。比如,fwrite(constvoid*buffer,size_t size,size_t count,FILE*stream),fwrite为系统函数名,第一个参数buffer为指针,表示要获取的数据的地址;第二个参数size为整型,表示要写入数据的单字节数;第三个参数count为整型,表示要进行写入size字节的数据项的个数;第四个参数sream表示目标文件指针。错误类型用于表示调用系统函数会出错的情况。终端可以根据第二函数,查询系统函数与错误类型的对应关系中是否存在第二函数,如果存在,则进一步查询是否存在与该第二函数匹配的错误类型,如果存在,便将该匹配的错误类型和第二函数的位置信息确定为第一定位信息。
如表1所示给出了fwrite函数及其对应的错误类型,假设第二函数为fwrite("xxxx",3,1,NULL),其中,“xxxx”表示有效的地址,则终端可以检测到该fwrite函数传入的第四个参数为空指针,即没有指向任何文件,因此,确定该第二函数的错误类型为“stream为空指针”,应用程序很可能由于fwrite的目标文件指针为空指针而导致崩溃。
表1
Figure BDA0001156425530000061
需要说明的是,该步骤104为可选步骤,终端可以在确定第二函数之后,直接将该第二函数的位置信息确定为第一定位信息,也即是,第一定位信息集合中可以包括第二函数的位置信息,也可以对应包括第二函数的位置信息和错误类型,本发明实施例对此不作限定。
上述步骤101至104是根据应用程序的崩溃记录文件,确定第一定位信息集合的过程,该第一定位信息集合用于指示应用程序崩溃之前所运行的代码中具有导致崩溃可能性的代码位置。此外,终端还可以根据预设的经验规则项对应用程序的源文件进行分析,以确定第二定位信息集合,该第二定位信息集合用于指示源文件中具有导致崩溃可能性的代码位置。其中,在对源文件进行分析的过程中,经验规则项除了用于指示系统函数与错误类型的对应关系,还可以用于指示语句类型与错误类型之间的对应关系,该过程包括下述步骤105至107。需要说明的是,终端可以先确定第一定位信息集合,再确定第二定位信息集合,或者以相反顺序进行,或者这两个过程同时进行,本发明实施例对第一定位集合和第二定位集合的确定顺序不作限定。
105、获取应用程序的源文件。
终端可以根据源文件的存储路径,以获取应用程序的源文件,该源文件的存储路径可由终端根据开发人员的操作进行配置,或者将应用程序的源文件直接存储至默认存储路径中,本发明实施例对此不作限定。
终端可以获取应用程序的全部源文件,当然,由于通常一个应用程序对应一个项目工程,该项目工程中包括多个源文件,比如,c++编程语言中后缀名为.cpp的文件均为源文件,则为了缩小需要分析的源文件的范围,提高崩溃原因的定位效率,终端可以根据崩溃记录文件,获取该崩溃记录文件所指示的源文件。比如,终端根据崩溃记录文件获取源文件的过程可以为:终端根据崩溃记录文件记录的函数地址,确定包含相应函数的源文件,并将该源文件确定为需要获取的源文件。
106、对于源文件中的每个函数,根据该函数在系统函数与错误类型的对应关系中进行查询,将查询得到的错误类型和该函数的位置信息确定为第二定位信息。
该步骤中的查询过程与步骤104中的查询过程同理,在此不作赘述。对于源文件中的每个函数,终端如果在系统函数与错误类型的对应关系中查询得到相应的错误类型,则将该函数的位置信息和错误类型确定为第二定位信息。
107、对于源文件中的每个语句,根据语句在预设的语句类型以及对应的错误类型中进行查询,将查询得到的错误类型和语句的位置信息和错误类型确定为第二定位信息。
为了更加全面的分析可能导致崩溃的原因,本实施例中除了步骤106在函数层面对源文件进行分析之外,还可以在语句的层面上对源文件进行分析。具体地,开发人员可以在语句层面,对经常遇到的导致应用程序崩溃的情况进行统计,将统计结果进行归纳,形成多条经验规则项。每条经验规则项用于指示语句类型与错误类型之间的对应关系,使得终端可以根据预设好的多条经验规则项对源文件中的每个语句分析,从而确定具有导致崩溃可能性的语句位置。
其中,语句的位置信息包括语句所在的源文件名、所在的函数名以及在源文件中的行号等。语句类型可以包括变量类型、运算符号等。比如,语句类型可以为数组,“/”(除号)等。错误类型用于表示使用相应语句类型时会出错的情况。如表2给出了几种语句类型和错误类型的示例。
表2
语句类型 错误类型
数组 下标越界
‘/’ 除数为零
对于源文件中的每个语句,终端均可以根据预设的语句类型与错误类型之间对应关系对该语句进行验证,从而确定该语句是否可能出错,从而导致崩溃。具体地,终端确定该语句的语句类型,并在语句类型与错误类型的对应关系中查询是否存在该语句类型,如果存在,则根据该语句类型对应的错误类型对该语句进行验证,如果验证结果指示该语句具有该错误类型所指示的问题,则将该错误类型确定为查询得到的错误类型,并将该查询得到的错误类型和该语句的位置信息确定为第二定位信息。
例如,该语句为“c=a/b”,则通过检测到该语句中包含除号,可以确定该语句的语句类型为“/”,由表2可知,该语句类型包含在语句类型和错误类型的对应关系中,进一步地,终端根据错误类型“除数为零”对该语句进行验证,如果除数b为零,则确定错误类型“除数为零”为查询得到的错误类型。
需要说明的是,在步骤105中终端如果根据崩溃记录文件获取源文件,则可能得到多个源文件,则步骤106和107中便是对每个源文件进行分析的过程。
108、将第一定位信息集合与第二定位信息集合进行匹配,根据匹配结果,确定目标定位信息集合,目标定位信息集合用于指示导致崩溃的实际代码位置。
在本发明实施例中,终端可以对第一定位信息集合和第二定位信息集合进行综合分析,根据导致崩溃可能性大小对全部定位信息进行排序,从而确定导致崩溃可能性较大的目标定位信息集合,以提高确定导致崩溃的代码位置的准确性。
具体地,确定目标定位信息集合的过程包括:对于第一定位信息集合中每个第一定位信息,如果第二定位信息集合中存在与第一定位信息相关的指定第二定位信息,则将第一定位信息和指定第二定位信息确定为第三定位信息。根据该确定的第三定位信息,终端可以将第一定位信息集合和第二定位信息集合所指示的定位信息划分为三个部分:第一部分为该第三定位信息,第二部分为第一定位信息集合中除第三定位信息之外的定位信息,第三部分为第二定位信息集合中除第三定位信息之外的定位信息。终端确定上述三个部分导致崩溃的可能性从大到小依次为:第一部分、第二部分、第三部分。终端按照第一部分、第二部分和第三部分的顺序进行排序。在排序结果中,按照从先到后的顺序,选取第二预设数目的定位信息组成目标定位信息集合。
需要说明的是,本实施例中将第一定位信息集合与第二定位信息集合中具有相关性的定位信息确定为导致崩溃可能性最高的定位信息。其中由于第一定位信息集合根据应用程序崩溃时的崩溃记录文件得到的,相当于应用程序崩溃时的现场信息,参考价值高于崩溃时未涉及到的源文件,因此,本实施例中第一定位信息集合导致崩溃的可能性要高于第二定位信息集合导致崩溃的可能性。
假设,第一定位信息集合包括:定位信息1(函数E)、定位信息2(函数D)和定位信息3(函数C)。第二定位信息集合中包括:定位信息4(函数D)、定位信息5(函数C中的语句x)和定位信息6(函数B中的语句y)。其中,“()”内用于表示相应定位信息所指示的函数或语句。
其中,对于每个第一定位信息,在第二定位信息集合中确定与该第一定位信息相关的指定第二定位信息的方式包括以下三种:
第一种方式、对于第二定位信息集合中的任一第二定位信息,如果该第二定位信息所指示的函数与第一定位信息所指示的函数相同,则确定该第二定位信息为与第一定位信息相关的指定第二定位信息。
该种方式中,该第二定位信息所指示的函数与第一定位信息所指示的函数相同是指二者所指示的函数名相同,以上述假设为例,可以得出第一定位信息集合中的定位信息2和第二定位信息集合中的定位信息4所指示的函数相同,均为函数D,因此,定位信息4即为定位信息2的指定第二定位信息。
由于第二定位信息集合中的定位信息均包括函数的错误类型,因此,基于该种方式,将第一定位信息和指定第二定位信息确定为第三定位信息的过程是指将指定第二定位信息确定为第三定位信息。也即是,将定位信息中包含内容更多的一项确定为第三定位信息。
第二种方式、对于第二定位信息集合中的任一第二定位信息,如果该第二定位信息所指示的语句包含在第一定位信息所指示的函数中,则确定该第二定位信息为与第一定位信息相关的指定第二定位信息。
以上述假设为例,可以得出第二定位信息集合中的定位信息5所指示的语句x包含在第一定位信息集合中的定位信息3所指示的函数C中,因此,定位信息5即为定位信息3的指定第二定位信息。
第三种方式、对于第二定位信息集合中的任一第二定位信息,如果该第二定位信息所指示的函数与第一定位信息所指示的函数具有调用关系,则确定该第二定位信息为与第一定位信息相关的指定第二定位信息。
该种方式可以作为一种补充的方式,假设采用上述两种方式均没有找到第一定位信息的指定第二定位信息,则终端还可以根据函数调用关系链,或者通过对源文件进行分析得到的函数调用关系来判断第一定位信息集合和第二定位信息集合中的函数之间是否具有函数调用关系。假如上述假设中,第一定位信息集合中不包括定位信息1和定位信息2,函数调用关系链为A->B->C->D->E,则终端可以得出定位信息3所指示的函数C与定位信息4所指示的函数D之间具有调用关系,从而确定定位信息4为定位信息3的指定第二定位信息。
其中,第一部分所指示的定位信息内部的排序方式可以为:如果第一定位信息指示函数的位置信息,与第一定位信息相关的指定第二定位信息指示语句的位置信息,则将指定第二定位信息排列在第一定位信息之前。也即是,将更细粒度的语句层面的定位信息排列在函数层面的定位信息之前。例如,针对上述第二种方式,所确定的定位信息5为定位信息3的指定第二定位信息,便可以将定位信息5(函数C的语句x)排列在定位信息3(函数C)之前。
需要说明的是,对于同为函数层级的定位信息来说,可以根据函数调用关系链所指示的调用顺序进行排序,比如按照函数调用关系链的反向顺序进行排序等,本发明实施例对此不作限定。
其中,第二部分所指示定位信息内部的排序方式可以为:按照崩溃记录文件所指示的函数调用关系链,对第一定位信息集合中除第三定位信息以外的定位信息进行排序。比如,可以根据函数调用关系链所指示的调用顺序进行排序,比如按照函数调用关系链的反向顺序进行排序,该种排序方式中函数调用关系链中位置越靠后的函数的导致崩溃的可能性越低。
其中,第二部分所指示定位信息内部的排序方式可以为:在对源文件分析过程中确定源文件的函数调用关系,按照源文件的函数调用关系,对第二定位信息集合中除第三定位信息以外的定位信息进行排序。比如,按照函数调用关系所指示的调用顺序进行排序。当然,还可以根据对源文件的分析顺序,对第二定位信息集合中除第三定位信息以外的定位信息进行排序,本发明实施例对此不作限定。
终端在确定目标定位信息集合之后,将目标定位信息集合中的定位信息按照顺序进行输出,使得开发人员能够根据输出的定位信息迅速地对导致崩溃的原因进行定位。此外,对于包含错误类型的定位信息,终端还可以确定与相应错误类型对应的文字提示,例如,当错误类型为除数为零时,终端可以输出“除数不能为零”的提示信息等。
为了更加形象的说明上述应用程序崩溃原因的定位过程,图2示出了一种系统流程图,包括了崩溃记录文件分析、源文件分析以及综合分析三大流程。其中,崩溃记录文件分析包括对崩溃记录文件的堆栈打印和堆栈分析,也即是步骤101至步骤104的过程,源文件分析包括源文件输入和潜在原因分析,也即是步骤105至步骤107的过程。而基于崩溃记录文件分析和源文件分析的分析结果,需要进一步进行综合分析,也即是相关性分析以及目标定位信息集合输出的过程,具体参见步骤108的过程。
在本实施例中,能够根据崩溃记录文件,确定应用程序崩溃之前所运行代码中具有导致崩溃可能性的第一定位信息集合,还能够根据预设的系统函数或语句类型与错误类型之间的对应关系对源文件进行分析,得到指示源文件中具有导致崩溃可能性的第二定位信息集合,并通过对第一定位信息集合和第二定位信息集合的综合分析,便可得到导致崩溃的实际代码位置,使得开发人员无需进行人工干预便可完成对崩溃原因的准确定位,大大缩减了定位所需的时间,提高了开发效率。
图3是本发明实施例提供的一种应用程序崩溃原因的定位装置的框图。参照图3,该装置包括确定模块301,分析模块302和匹配模块303。
其中,确定模块301与分析模块302连接,用于根据应用程序的崩溃记录文件,确定第一定位信息集合,该第一定位信息集合用于指示该应用程序崩溃之前所运行的代码中具有导致崩溃可能性的代码位置;分析模块302与匹配模块303连接,用于根据预设的系统函数或语句类型与错误类型之间的对应关系,对该应用程序的源文件进行分析,得到第二定位信息集合,该第二定位信息集合用于指示该源文件中具有导致崩溃可能性的代码位置;匹配模块303,用于将该第一定位信息集合与该第二定位信息集合进行匹配,根据匹配结果,确定目标定位信息集合,该目标定位信息集合用于指示导致崩溃的实际代码位置。
在一种可能的实现方式中,该确定模块用于根据该崩溃记录文件,确定该应用程序崩溃时的函数调用关系链和所运行的代码位置,该函数调用关系链用于指示函数的调用顺序;在该函数调用关系链中,以该代码位置所指示的函数为起点进行回溯,确定第一函数,该第一函数为回溯过程中的第一个非系统函数;将该第一函数的位置信息确定为第一定位信息。
在一种可能的实现方式中,该确定模块还用于:
根据该第一函数,在该函数调用关系链中确定第一预设数目的第二函数,该第二函数是指该函数调用关系链位于该第一函数之后的函数;
将该每个第二函数的位置信息确定为第一定位信息;或,对于每个第二函数,根据该第二函数在预设的系统函数与错误类型的对应关系中进行查询,将查询得到的错误类型和该第二函数的位置信息确定为第一定位信息。
在一种可能的实现方式中,该分析模块,用于对于该源文件中的每个函数,根据该函数在预设的系统函数与错误类型的对应关系中进行查询;将查询得到的错误类型和该函数的位置信息确定为第二定位信息;对于该源文件中的每个语句,根据该语句在预设的语句类型与错误类型的对应关系中进行查询;将查询得到的错误类型和该语句的位置信息和错误类型确定为第二定位信息。
在一种可能的实现方式中,该匹配模块包括:
确定子模块,用于对于该第一定位信息集合中每个第一定位信息,如果该第二定位信息集合中存在与该第一定位信息相关的指定第二定位信息,则将该第一定位信息和该指定第二定位信息确定为第三定位信息;
排序子模块,用于将该第一定位信息集合和该第二定位信息集合所指示的定位信息,按照该第三定位信息、该第一定位信息集合中除该第三定位信息以外的定位信息和该第二定位信息集合中除该第三定位信息以外的定位信息的顺序进行排序;
选取子模块,用于按照从先到后的顺序,选取第二预设数目的定位信息组成该目标定位信息集合。
在一种可能的实现方式中,该确定子模块用于对于该第二定位信息集合中的任一第二定位信息,如果该第二定位信息所指示的函数与该第一定位信息所指示的函数相同,则确定该第二定位信息为与该第一定位信息相关的指定第二定位信息;或,对于该第二定位信息集合中的任一第二定位信息,如果该第二定位信息所指示的语句包含在该第一定位信息所指示的函数中,则确定该第二定位信息为与该第一定位信息相关的指定第二定位信息;或,对于该第二定位信息集合中的任一第二定位信息,如果该第二定位信息所指示的函数与该第一定位信息所指示的函数具有调用关系,则确定该第二定位信息为与该第一定位信息相关的指定第二定位信息。
在一种可能的实现方式中,该排序子模块用于当该第一定位信息指示函数的位置信息,与该第一定位信息相关的指定第二定位信息指示语句的位置信息时,将该指定第二定位信息排列在该第一定位信息之前。
在一种可能的实现方式中,述排序子模块还用于按照该崩溃记录文件所指示的函数调用关系链,对该第一定位信息集合中除该第三定位信息以外的定位信息进行排序;或,在对该源文件分析过程中确定该源文件的函数调用关系,按照该源文件的函数调用关系,对该第二定位信息集合中除该第三定位信息以外的定位信息进行排序;或,根据对该源文件的分析顺序,对该第二定位信息集合中除该第三定位信息以外的定位信息进行排序。
在本实施例中,能够根据崩溃记录文件,确定应用程序崩溃之前所运行代码中具有导致崩溃可能性的第一定位信息集合,还能够根据预设的系统函数或语句类型与错误类型之间的对应关系,得到指示源文件中具有导致崩溃可能性的第二定位信息集合,并通过对第一定位信息集合和第二定位信息集合的综合分析,便可得到导致崩溃的实际代码位置,使得开发人员无需进行人工干预便可完成对崩溃原因的准确定位,大大缩减了定位所需的时间,提高了开发效率。
需要说明的是:上述实施例提供的应用程序崩溃原因的定位装置在定位应用程序崩溃原因时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用程序崩溃原因的定位装置与应用程序崩溃原因的定位方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本发明实施例提供的一种终端的结构示意图,该终端可以用于执行上述各个实施例中提供的应用程序崩溃原因的定位方法。参见图4,该终端400包括:
终端400可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WiFi(Wireless Fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图4中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF电路110可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF电路110包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(CodeDivision Multiple Access,码分多址)、WCDMA(Wideband Code Division MultipleAccess,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(ShortMessaging Service,短消息服务)等。
存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端400的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。具体地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140可用于显示由用户输入的信息或提供给用户的信息以及终端400的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图4中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
终端400还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在终端400移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端400还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路160、扬声器161,传声器162可提供用户与终端400之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与终端400的通信。
WiFi属于短距离无线传输技术,终端400通过WiFi模块170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了WiFi模块170,但是可以理解的是,其并不属于终端400的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180是终端400的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行终端400的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端400还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端400还可以包括摄像头、蓝牙模块等,在此不再赘述。具体在本实施例中,终端的显示单元是触摸屏显示器,终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。所述一个或者一个以上程序包含可执行指令,终端400被配置为执行指令,以执行上述应用程序崩溃原因的定位方法实施例中终端所执行的方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由终端中的处理器执行以完成上述实施例中应用程序崩溃原因的定位方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种应用程序崩溃原因的定位方法,其特征在于,所述方法包括:
根据应用程序的崩溃记录文件,确定第一定位信息集合,所述第一定位信息集合用于指示所述应用程序崩溃之前所运行的代码中具有导致崩溃可能性的代码位置;
根据预设的系统函数或语句类型与错误类型之间的对应关系,对所述应用程序的源文件进行分析,得到第二定位信息集合,所述第二定位信息集合用于指示所述源文件中具有导致崩溃可能性的代码位置;
将所述第一定位信息集合与所述第二定位信息集合进行匹配,根据匹配结果,确定目标定位信息集合,所述目标定位信息集合用于指示导致崩溃的实际代码位置。
2.根据权利要求1所述的方法,其特征在于,所述根据应用程序的崩溃记录文件,确定第一定位信息集合包括:
根据所述崩溃记录文件,确定所述应用程序崩溃时的函数调用关系链和所运行的代码位置,所述函数调用关系链用于指示函数的调用顺序;
在所述函数调用关系链中,以所述代码位置所指示的函数为起点进行回溯,确定第一函数,所述第一函数为回溯过程中的第一个非系统函数;
将所述第一函数的位置信息确定为第一定位信息。
3.根据权利要求2所述的方法,其特征在于,所述根据应用程序的崩溃记录文件,确定第一定位信息集合包括:
根据所述第一函数,在所述函数调用关系链中确定第一预设数目的第二函数,所述第二函数是指所述函数调用关系链位于所述第一函数之后的函数;
将每个第二函数的位置信息确定为第一定位信息;或,对于每个第二函数,根据所述第二函数在预设的系统函数与错误类型的对应关系中进行查询,将查询得到的错误类型和所述第二函数的位置信息确定为第一定位信息。
4.根据权利要求1所述的方法,其特征在于,所述根据预设的系统函数或语句类型与错误类型之间的对应关系,对所述应用程序的源文件进行分析,得到第二定位信息集合包括:
对于所述源文件中的每个函数,根据所述函数在预设的系统函数与错误类型的对应关系中进行查询;将查询得到的错误类型和所述函数的位置信息确定为第二定位信息;
对于所述源文件中的每个语句,根据所述语句在预设的语句类型与错误类型的对应关系中进行查询;将查询得到的错误类型和所述语句的位置信息和错误类型确定为第二定位信息。
5.根据权利要求1所述的方法,其特征在于,所述将所述第一定位信息集合与所述第二定位信息集合进行匹配,根据匹配结果,确定目标定位信息集合包括:
对于所述第一定位信息集合中每个第一定位信息,如果所述第二定位信息集合中存在与所述第一定位信息相关的指定第二定位信息,则将所述第一定位信息和所述指定第二定位信息确定为第三定位信息;
将所述第一定位信息集合和所述第二定位信息集合所指示的定位信息,按照所述第三定位信息、所述第一定位信息集合中除所述第三定位信息以外的定位信息和所述第二定位信息集合中除所述第三定位信息以外的定位信息的顺序进行排序;
按照从先到后的顺序,选取第二预设数目的定位信息组成所述目标定位信息集合。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
对于所述第二定位信息集合中的任一第二定位信息,如果所述第二定位信息所指示的函数与所述第一定位信息所指示的函数相同,则确定所述第二定位信息为与所述第一定位信息相关的指定第二定位信息;或,
对于所述第二定位信息集合中的任一第二定位信息,如果所述第二定位信息所指示的语句包含在所述第一定位信息所指示的函数中,则确定所述第二定位信息为与所述第一定位信息相关的指定第二定位信息;或,
对于所述第二定位信息集合中的任一第二定位信息,如果所述第二定位信息所指示的函数与所述第一定位信息所指示的函数具有调用关系,则确定所述第二定位信息为与所述第一定位信息相关的指定第二定位信息。
7.根据权利要求5或6所述的方法,其特征在于,所述将所述第一定位信息集合和所述第二定位信息集合所指示的定位信息,按照所述第三定位信息、所述第一定位信息集合中除所述第三定位信息以外的定位信息和所述第二定位信息集合中除所述第三定位信息以外的定位信息的顺序进行排序包括:
如果所述第一定位信息指示函数的位置信息,与所述第一定位信息相关的指定第二定位信息指示语句的位置信息,则将所述指定第二定位信息排列在所述第一定位信息之前。
8.根据权利要求5所述的方法,其特征在于,所述将所述第一定位信息集合和所述第二定位信息集合所指示的定位信息,按照所述第三定位信息、所述第一定位信息集合中除所述第三定位信息以外的定位信息和所述第二定位信息集合中除所述第三定位信息以外的定位信息的顺序进行排序包括:
按照所述崩溃记录文件所指示的函数调用关系链,对所述第一定位信息集合中除所述第三定位信息以外的定位信息进行排序;或,
在对所述源文件分析过程中确定所述源文件的函数调用关系,按照所述源文件的函数调用关系,对所述第二定位信息集合中除所述第三定位信息以外的定位信息进行排序;或,
根据对所述源文件的分析顺序,对所述第二定位信息集合中除所述第三定位信息以外的定位信息进行排序。
9.一种应用程序崩溃原因的定位装置,其特征在于,所述装置包括:
确定模块,用于根据应用程序的崩溃记录文件,确定第一定位信息集合,所述第一定位信息集合用于指示所述应用程序崩溃之前所运行的代码中具有导致崩溃可能性的代码位置;
分析模块,用于根据预设的系统函数或语句类型与错误类型之间的对应关系,对所述应用程序的源文件进行分析,得到第二定位信息集合,所述第二定位信息集合用于指示所述源文件中具有导致崩溃可能性的代码位置;
匹配模块,用于将所述第一定位信息集合与所述第二定位信息集合进行匹配,根据匹配结果,确定目标定位信息集合,所述目标定位信息集合用于指示导致崩溃的实际代码位置。
10.根据权利要求9所述的装置,其特征在于,所述确定模块用于根据所述崩溃记录文件,确定所述应用程序崩溃时的函数调用关系链和所运行的代码位置,所述函数调用关系链用于指示函数的调用顺序;在所述函数调用关系链中,以所述代码位置所指示的函数为起点进行回溯,确定第一函数,所述第一函数为回溯过程中的第一个非系统函数;将所述第一函数的位置信息确定为第一定位信息。
11.根据权利要求10所述的装置,其特征在于,所述确定模块还用于:
根据所述第一函数,在所述函数调用关系链中确定第一预设数目的第二函数,所述第二函数是指所述函数调用关系链位于所述第一函数之后的函数;
将每个第二函数的位置信息确定为第一定位信息;或,对于每个第二函数,根据所述第二函数在预设的系统函数与错误类型的对应关系中进行查询,将查询得到的错误类型和所述第二函数的位置信息确定为第一定位信息。
12.根据权利要求9所述的装置,其特征在于,所述分析模块,用于对于所述源文件中的每个函数,根据所述函数在系统函数与错误类型的对应关系中进行查询;将查询得到的错误类型和所述函数的位置信息确定为第二定位信息;对于所述源文件中的每个语句,根据所述语句在预设的语句类型与错误类型的对应关系中进行查询;将查询得到的错误类型和所述语句的位置信息和错误类型确定为第二定位信息。
13.根据权利要求9所述的装置,其特征在于,所述匹配模块包括:
确定子模块,用于对于所述第一定位信息集合中每个第一定位信息,如果所述第二定位信息集合中存在与所述第一定位信息相关的指定第二定位信息,则将所述第一定位信息和所述指定第二定位信息确定为第三定位信息;
排序子模块,用于将所述第一定位信息集合和所述第二定位信息集合所指示的定位信息,按照所述第三定位信息、所述第一定位信息集合中除所述第三定位信息以外的定位信息和所述第二定位信息集合中除所述第三定位信息以外的定位信息的顺序进行排序;
选取子模块,用于按照从先到后的顺序,选取第二预设数目的定位信息组成所述目标定位信息集合。
14.根据权利要求13所述的装置,其特征在于,所述确定子模块用于对于所述第二定位信息集合中的任一第二定位信息,如果所述第二定位信息所指示的函数与所述第一定位信息所指示的函数相同,则确定所述第二定位信息为与所述第一定位信息相关的指定第二定位信息;或,对于所述第二定位信息集合中的任一第二定位信息,如果所述第二定位信息所指示的语句包含在所述第一定位信息所指示的函数中,则确定所述第二定位信息为与所述第一定位信息相关的指定第二定位信息;或,对于所述第二定位信息集合中的任一第二定位信息,如果所述第二定位信息所指示的函数与所述第一定位信息所指示的函数具有调用关系,则确定所述第二定位信息为与所述第一定位信息相关的指定第二定位信息。
15.根据权利要求13或14所述的装置,其特征在于,所述排序子模块用于当所述第一定位信息指示函数的位置信息,与所述第一定位信息相关的指定第二定位信息指示语句的位置信息时,将所述指定第二定位信息排列在所述第一定位信息之前。
16.根据权利要求13所述的装置,其特征在于,所述排序子模块还用于按照所述崩溃记录文件所指示的函数调用关系链,对所述第一定位信息集合中除所述第三定位信息以外的定位信息进行排序;或,在对所述源文件分析过程中确定所述源文件的函数调用关系,按照所述源文件的函数调用关系,对所述第二定位信息集合中除所述第三定位信息以外的定位信息进行排序;或,根据对所述源文件的分析顺序,对所述第二定位信息集合中除所述第三定位信息以外的定位信息进行排序。
CN201611031557.7A 2016-11-18 2016-11-18 应用程序崩溃原因的定位方法及装置 Active CN108073495B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611031557.7A CN108073495B (zh) 2016-11-18 2016-11-18 应用程序崩溃原因的定位方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611031557.7A CN108073495B (zh) 2016-11-18 2016-11-18 应用程序崩溃原因的定位方法及装置

Publications (2)

Publication Number Publication Date
CN108073495A CN108073495A (zh) 2018-05-25
CN108073495B true CN108073495B (zh) 2020-04-21

Family

ID=62161017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611031557.7A Active CN108073495B (zh) 2016-11-18 2016-11-18 应用程序崩溃原因的定位方法及装置

Country Status (1)

Country Link
CN (1) CN108073495B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240700B (zh) * 2018-07-06 2021-04-23 北京大学 关键代码定位方法与系统
CN110175052A (zh) * 2019-04-16 2019-08-27 努比亚技术有限公司 一种开启文件的方法、装置及计算机可读存储介质
CN112199270B (zh) * 2019-07-08 2024-02-27 腾讯科技(深圳)有限公司 一种程序测试方法、装置、设备及介质
CN110442519B (zh) * 2019-07-23 2022-08-19 深圳市六度人和科技有限公司 一种崩溃文件处理方法、装置、电子设备及存储介质
CN111382077B (zh) * 2020-03-13 2023-09-01 北京奇艺世纪科技有限公司 应用程序崩溃原因定位方法、装置、电子设备及存储介质
CN111552586B (zh) * 2020-04-22 2022-09-30 郑州阿帕斯数云信息科技有限公司 应用程序崩溃处理方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160371141A1 (en) * 2015-06-22 2016-12-22 Microsoft Technology Licensing, Llc Matched syndrome error correction
CN105653432B (zh) * 2015-12-22 2019-02-15 北京奇虎科技有限公司 一种崩溃数据的处理方法和装置
CN105630659B (zh) * 2015-12-23 2018-03-20 北京奇虎科技有限公司 应用崩溃日志的获取方法及装置
CN105843741B (zh) * 2016-03-24 2020-04-28 腾讯科技(深圳)有限公司 应用程序的信息处理方法和装置

Also Published As

Publication number Publication date
CN108073495A (zh) 2018-05-25

Similar Documents

Publication Publication Date Title
CN108073495B (zh) 应用程序崩溃原因的定位方法及装置
CN108880867B (zh) 一种网络设备数据采集方法及系统
CN107038112B (zh) 应用界面的调试方法及装置
CN106708676B (zh) 接口测试方法及装置
CN105404585B (zh) 获取代码覆盖率的方法及装置
CN105429775B (zh) 一种上报日志的方法及装置
CN104516812A (zh) 一种软件测试方法和装置
CN108268366B (zh) 测试用例执行方法及装置
CN104852885B (zh) 一种进行验证码验证的方法、装置和系统
CN107943683B (zh) 一种测试脚本生成方法、装置、电子设备及存储介质
CN107291586B (zh) 一种应用程序的分析方法和装置
CN106649126B (zh) 一种对应用程序进行测试的方法和装置
CN108089977B (zh) 一种应用程序的异常处理方法、装置及移动终端
CN110196795B (zh) 检测移动终端应用运行状态的方法及相关装置
CN104298587A (zh) 一种代码覆盖测试方法、装置和系统
CN111723002A (zh) 一种代码调试方法、装置、电子设备及存储介质
CN104809055B (zh) 一种基于云平台的应用程序测试方法和装置
CN106776301B (zh) 子元素测试方法及装置
CN112749074B (zh) 一种测试用例推荐方法以及装置
CN110069407B (zh) 一种应用程序的功能测试方法和装置
CN107967203B (zh) 基于可执行文件的函数判定方法及装置
CN115269361A (zh) 一种软件开发工具包的测试方法、装置和可读存储介质
CN106709330B (zh) 记录文件执行行为的方法及装置
CN105528220B (zh) 加载动态共享对象的方法和装置
CN112084104A (zh) 一种异常测试方法和装置

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
GR01 Patent grant
GR01 Patent grant