Nothing Special   »   [go: up one dir, main page]

CN106649114B - 对应用程序崩溃进行定位的方法和装置 - Google Patents

对应用程序崩溃进行定位的方法和装置 Download PDF

Info

Publication number
CN106649114B
CN106649114B CN201611207121.9A CN201611207121A CN106649114B CN 106649114 B CN106649114 B CN 106649114B CN 201611207121 A CN201611207121 A CN 201611207121A CN 106649114 B CN106649114 B CN 106649114B
Authority
CN
China
Prior art keywords
stage
application program
successful information
code
collapsed
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
CN201611207121.9A
Other languages
English (en)
Other versions
CN106649114A (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.)
Beijing 360 Zhiling Technology Co ltd
Original Assignee
Beijing Qihoo Technology 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 Beijing Qihoo Technology Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201611207121.9A priority Critical patent/CN106649114B/zh
Publication of CN106649114A publication Critical patent/CN106649114A/zh
Application granted granted Critical
Publication of CN106649114B publication Critical patent/CN106649114B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3644Debugging of software by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3636Debugging of software by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了对应用程序崩溃进行定位的方法和装置。其中方法包括:在应用程序的每个阶段运行结束后,记录该阶段的运行成功信息;在应用程序发生崩溃时,获取最后一次记录的运行成功信息;根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。该技术方案通过简单易行的处理方式,可以快速、准确地定位崩溃位置,有助于开发者对应用程序进行调整和完善。

Description

对应用程序崩溃进行定位的方法和装置
技术领域
本发明涉及计算机技术领域,具体涉及对应用程序崩溃进行定位的方法和装置。
背景技术
对应用程序而言,崩溃几乎是不可避免的事情。那么对于应用程序的开发者来说,根据崩溃的具体情况来对应用程序进行改进是非常有必要的,这就需要开发者获取崩溃时的相关信息,来判断应用程序的哪一段代码可能存在问题,因此需要对崩溃进行定位。
发明内容
鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的对应用程序崩溃进行定位的方法和装置。
依据本发明的一个方面,提供了一种对应用程序崩溃进行定位的方法,其中,所述应用程序根据运行顺序被划分为多个阶段,该方法包括:
在应用程序的每个阶段运行结束后,记录该阶段的运行成功信息;
在应用程序发生崩溃时,获取最后一次记录的运行成功信息;
根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
可选地,所述记录该阶段的运行成功信息包括:
由与每个阶段对应的运行记录插件记录该阶段的运行成功信息。
可选地,该方法还包括:
以指定变量记录各阶段的运行成功信息。
可选地,该方法还包括:在各运行记录插件中预设与相应阶段对应的阶段编号;在应用程序运行后,将所述指定变量初始化;
所述由与每个阶段对应的运行记录插件记录该阶段的运行成功信息包括:将所述指定变量的值置为与该阶段对应的阶段编号。
可选地,所述在应用程序发生崩溃时,获取最后一次记录的运行成功信息包括:
在应用程序发生崩溃时,获取所述指定变量的值。
可选地,所述根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段包括:
将最后一次记录的运行成功信息上报至应用程序的服务器,由服务器根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
依据本发明的另一方面,提供了一种对应用程序崩溃进行定位的方法,包括:
将应用程序根据运行顺序划分为多个阶段;
将对应用程序崩溃进行定位的执行代码打包到应用程序的安装包中,所述对应用程序崩溃进行定位的执行代码适于执行如上述任一项所述的方法。
可选地,所述将应用程序根据运行顺序划分为多个阶段包括:
获取所述应用程序的源代码;
根据所述应用程序的源代码的代码结构,将所述应用程序的源代码按执行顺序划分为多个部分。
可选地,所述应用程序为经过加固的应用程序;
该方法还包括:获取所述应用程序的加固壳程序的源代码;根据所述加固壳程序的源代码的代码结构,将所述加固壳程序的源代码按执行顺序划分为多个部分。
可选地,该方法还包括:
依照各部分代码的执行顺序,为每部分代码分配相应的编号。
依据本发明的又一方面,提供了一种对应用程序崩溃进行定位的装置,其中,所述应用程序根据运行顺序被划分为多个阶段,该装置包括:
记录单元,适于在应用程序的每个阶段运行结束后,记录该阶段的运行成功信息;
获取单元,适于在应用程序发生崩溃时,获取最后一次记录的运行成功信息;
定位单元,适于根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
可选地,所述记录单元包括:与每个阶段对应的记录子单元;
所述记录子单元,适于记录其对应的阶段的运行成功信息。
可选地,所述记录单元,适于以指定变量记录各阶段的运行成功信息。
可选地,各所述记录子单元中预设有与相应阶段对应的阶段编号;
所述记录单元,还适于在应用程序运行后,将所述指定变量初始化;
所述记录子单元,适于将所述指定变量的值置为与该记录子单元对应的阶段的阶段编号。
可选地,所述获取单元,适于在应用程序发生崩溃时,获取所述指定变量的值。
可选地,所述定位单元,适于将最后一次记录的运行成功信息上报至应用程序的服务器,由服务器根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
依据本发明的再一方面,提供了一种对应用程序崩溃进行定位的装置,其中,该装置包括:
分析单元,适于将应用程序根据运行顺序划分为多个阶段;
修改单元,将如上述任一项所述的装置打包到应用程序的安装包中。
可选地,所述分析单元,适于获取所述应用程序的源代码,根据所述应用程序的源代码的代码结构,将所述应用程序的源代码按执行顺序划分为多个部分。
可选地,所述应用程序为经过加固的应用程序;
所述分析单元,适于获取所述应用程序的加固壳程序的源代码,根据所述加固壳程序的源代码的代码结构,将所述加固壳程序的源代码按执行顺序划分为多个部分。
可选地,所述修改单元,适于依照各部分代码的执行顺序,为每部分代码分配相应的编号。
由上述可知,本发明的技术方案,通过记录应用程序在每个阶段的成功运行信息,可以在应用程序发生崩溃时根据最后一次记录的运行成功信息定位到最后一次成功运行的阶段,那么该阶段的下一阶段就是发生崩溃的阶段。该技术方案通过简单易行的处理方式,可以快速、准确地定位崩溃位置,有助于开发者对应用程序进行调整和完善。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种对应用程序崩溃进行定位的方法的流程示意图;
图2示出了根据本发明一个实施例的另一种对应用程序崩溃进行定位的方法的流程示意图;
图3示出了根据本发明一个实施例的一种对应用程序崩溃进行定位的装置的结构示意图;
图4示出了根据本发明一个实施例的另一种对应用程序崩溃进行定位的装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种对应用程序崩溃进行定位的方法的流程示意图,其中,应用程序根据运行顺序被划分为多个阶段。如图1所示,该方法包括:
步骤S110,在应用程序的每个阶段运行结束后,记录该阶段的运行成功信息。
步骤S120,在应用程序发生崩溃时,获取最后一次记录的运行成功信息。
步骤S130,根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
许多应用程序在发生崩溃时,都会获取许多信息(例如,日志信息)作为崩溃的相关信息,开发者可以根据这些信息定位崩溃,但这往往并不能快速准确地实现崩溃定位。例如,应用程序在调用系统接口A时发生了崩溃,此时搜集到的崩溃信息是系统的一些相关模块,而不包括应用程序本身的模块,这时开发者需要对大量的崩溃信息进行分析,才能定位到应用程序发生崩溃的具体模块。
可见,图1所示的方法,通过记录应用程序在每个阶段的成功运行信息,可以在应用程序发生崩溃时根据最后一次记录的运行成功信息定位到最后一次成功运行的阶段,那么该阶段的下一阶段就是发生崩溃的阶段。该技术方案通过简单易行的处理方式,可以快速、准确地定位崩溃位置,有助于开发者对应用程序进行调整和完善。
在本发明的一个实施例中,图1所示的方法中,记录该阶段的运行成功信息包括:由与每个阶段对应的运行记录插件记录该阶段的运行成功信息。
具体地,可以在应用程序的开发过程中,在每个阶段的结束位置插入实现运行记录插件的代码。这样在一个阶段运行结束后,就会立即调用运行记录插件来记录该阶段的运行成功信息。而为了避免调用运行记录插件失败产生崩溃,也可以一个很简单的方法来实现运行记录插件的功能,在本发明的一个实施例中,该方法还包括:以指定变量记录各阶段的运行成功信息。那么各运行记录插件只需要将运行成功信息写入指定变量即可,这个功能可以以几乎不会发生崩溃的方式来实现。
具体地,在本发明的一个实施例中,上述方法还包括:在各运行记录插件中预设与相应阶段对应的阶段编号;在应用程序运行后,将指定变量初始化;由与每个阶段对应的运行记录插件记录该阶段的运行成功信息包括:将指定变量的值置为与该阶段对应的阶段编号。
举例而言,设置一个全局变量running_state,在应用程序运行后将其初始化为0。第1阶段对应的运行记录插件中,预设的阶段编号为1;第2阶段对应的运行记录插件中,预设的阶段编号为2……第n阶段对应的运行记录插件中,预设的阶段编号为n。那么在第1阶段运行结束后,与第1阶段对应的运行记录插件将running_state的值置为1;在第2阶段运行结束后,与第1阶段对应的运行记录插件将running_state的值置为2……在第n阶段运行结束后,与第1阶段对应的运行记录插件将running_state的值置为n。如果第m个阶段运行成功,将running_state的值置为m,而第m+1个阶段发生了崩溃,那么就无法将running_state的值置为其他值,此时就可以根据当前running_state的值,确定该应用程序成功运行的最后一个阶段。也就是在本发明的一个实施例中,上述方法中,在应用程序发生崩溃时,获取最后一次记录的运行成功信息包括:在应用程序发生崩溃时,获取指定变量的值。
在本发明的一个实施例中,上述方法中,根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段包括:将最后一次记录的运行成功信息上报至应用程序的服务器,由服务器根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
开发者可以根据应用程序崩溃的相关信息,调试、修改应用程序的源代码来解决在多个智能终端上普遍出现的崩溃问题,而且在应用程序发生崩溃时还需要很多崩溃信息来帮助开发者实现问题的解决。因此在本实施例中,将最后一次记录的运行成功信息和其他的崩溃信息一并上报至应用程序的服务器,例如将running_state的值与崩溃日志上报至应用程序的服务器。
图2示出了根据本发明一个实施例的另一种对应用程序崩溃进行定位的方法的流程示意图,如图2所示,该方法包括:
步骤S210,将应用程序根据运行顺序划分为多个阶段。
步骤S220,将对应用程序崩溃进行定位的执行代码打包到应用程序的安装包中。对应用程序崩溃进行定位的执行代码适于执行如上述任一实施例中的方法。
上述实施例是在智能终端上执行的,而这些实施例需要将应用程序划分为多个阶段。考虑到应用程序内部很大程度上是顺序执行的,因此在本实施例中,将应用程序按运行顺序划分为多个阶段,即对应用程序本身进行处理。
图2所示的方法可以在获取到应用程序后执行,也可以在应用程序的开发阶段执行。在本发明的一个实施例中,图2所示的方法中,将应用程序根据运行顺序划分为多个阶段包括:获取应用程序的源代码;根据应用程序的源代码的代码结构,将应用程序的源代码按执行顺序划分为多个部分。
应用程序往往需要进行加固处理,例如安卓应用程序的APK包中可能包括大量SO文件、DLL文件,还可能对这些文件分别进行加固。因此在本发明的一个实施例中,上述方法中,应用程序为经过加固的应用程序;该方法还包括:获取应用程序的加固壳程序的源代码;根据加固壳程序的源代码的代码结构,将加固壳程序的源代码按执行顺序划分为多个部分。
考虑到加固壳程序往往是优先于原应用程序的运行的,那么对于经过加固的应用程序来说,在对源代码处理时,就得到了M个加固壳程序的源代码部分,和N个原应用程序的源代码部分。那么其执行顺序为:1,2……M,M+1,M+2……M+N。根据这样的执行顺序,在本发明的一个实施例中,上述方法还包括:依照各部分代码的执行顺序,为每部分代码分配相应的编号。
例如,在加固壳程序的源代码的第j个部分后,写入将running_state的值置为j的代码;在原应用程序的源代码的第k个部分后,写入将running_state的值置为k的代码。
图3示出了根据本发明一个实施例的一种对应用程序崩溃进行定位的装置的结构示意图,其中,应用程序根据运行顺序被划分为多个阶段。如图3所示,对应用程序崩溃进行定位的装置300包括:
记录单元310,适于在应用程序的每个阶段运行结束后,记录该阶段的运行成功信息。
获取单元320,适于在应用程序发生崩溃时,获取最后一次记录的运行成功信息。
定位单元330,适于根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
可见,图3所示的装置,通过记录应用程序在每个阶段的成功运行信息,可以在应用程序发生崩溃时根据最后一次记录的运行成功信息定位到最后一次成功运行的阶段,那么该阶段的下一阶段就是发生崩溃的阶段。该技术方案通过简单易行的处理方式,可以快速、准确地定位崩溃位置,有助于开发者对应用程序进行调整和完善。
在本发明的一个实施例中,图3所示的装置中,记录单元包括310:与每个阶段对应的记录子单元311;记录子单元311,适于记录其对应的阶段的运行成功信息。
在本发明的一个实施例中,上述装置中,记录单元310,适于以指定变量记录各阶段的运行成功信息。
在本发明的一个实施例中,上述装置中,各记录子单元311中预设有与相应阶段对应的阶段编号;记录单元310,还适于在应用程序运行后,将指定变量初始化;记录子单元311,适于将指定变量的值置为与该记录子单元311对应的阶段的阶段编号。
在本发明的一个实施例中,上述装置中,获取单元320,适于在应用程序发生崩溃时,获取指定变量的值。
在本发明的一个实施例中,上述装置中,定位单元330,适于将最后一次记录的运行成功信息上报至应用程序的服务器,由服务器根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
图4示出了根据本发明一个实施例的另一种对应用程序崩溃进行定位的装置的结构示意图,如图4所示,对应用程序崩溃进行定位的装置400包括:
分析单元410,适于将应用程序根据运行顺序划分为多个阶段;
修改单元420,将如上述任一实施例中的对应用程序崩溃进行定位的装置300打包到应用程序的安装包中。
上述装置实施例是在智能终端上执行的,而这些实施例需要将应用程序划分为多个阶段。考虑到应用程序内部很大程度上是顺序执行的,因此在本实施例中,将应用程序按运行顺序划分为多个阶段,即对应用程序本身进行处理。
在本发明的一个实施例中,图4所示的装置中,分析单元410,适于获取应用程序的源代码,根据应用程序的源代码的代码结构,将应用程序的源代码按执行顺序划分为多个部分。
在本发明的一个实施例中,上述装置中,应用程序为经过加固的应用程序;分析单元410,适于获取应用程序的加固壳程序的源代码,根据加固壳程序的源代码的代码结构,将加固壳程序的源代码按执行顺序划分为多个部分。
在本发明的一个实施例中,上述装置中,修改单元420,适于依照各部分代码的执行顺序,为每部分代码分配相应的编号。
需要说明的是,上述各装置实施例的具体实施方式与前述对应方法实施例的具体实施方式相同,在此不再赘述。
综上所述,本发明的技术方案,通过记录应用程序在每个阶段的成功运行信息,可以在应用程序发生崩溃时根据最后一次记录的运行成功信息定位到最后一次成功运行的阶段,那么该阶段的下一阶段就是发生崩溃的阶段。该技术方案通过简单易行的处理方式,可以快速、准确地定位崩溃位置,有助于开发者对应用程序进行调整和完善。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的对应用程序崩溃进行定位的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明的实施例公开了A1、一种对应用程序崩溃进行定位的方法,其中,所述应用程序根据运行顺序被划分为多个阶段,该方法包括:
在应用程序的每个阶段运行结束后,记录该阶段的运行成功信息;
在应用程序发生崩溃时,获取最后一次记录的运行成功信息;
根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
A2、如A1所述的方法,其中,所述记录该阶段的运行成功信息包括:
由与每个阶段对应的运行记录插件记录该阶段的运行成功信息。
A3、如A2所述的方法,其中,该方法还包括:
以指定变量记录各阶段的运行成功信息。
A4、如A3所述的方法,其中,该方法还包括:在各运行记录插件中预设与相应阶段对应的阶段编号;在应用程序运行后,将所述指定变量初始化;
所述由与每个阶段对应的运行记录插件记录该阶段的运行成功信息包括:将所述指定变量的值置为与该阶段对应的阶段编号。
A5、如A4所述的方法,其中,所述在应用程序发生崩溃时,获取最后一次记录的运行成功信息包括:
在应用程序发生崩溃时,获取所述指定变量的值。
A6、如A1所述的方法,其中,所述根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段包括:
将最后一次记录的运行成功信息上报至应用程序的服务器,由服务器根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
本发明的实施例还公开了B7、一种对应用程序崩溃进行定位的方法,其中,该方法包括:
将应用程序根据运行顺序划分为多个阶段;
将对应用程序崩溃进行定位的执行代码打包到应用程序的安装包中,所述对应用程序崩溃进行定位的执行代码适于执行如A1-A6中任一项所述的方法。
B8、如B7所述的方法,其中,所述将应用程序根据运行顺序划分为多个阶段包括:
获取所述应用程序的源代码;
根据所述应用程序的源代码的代码结构,将所述应用程序的源代码按执行顺序划分为多个部分。
B9、如B8所述的方法,其中,所述应用程序为经过加固的应用程序;
该方法还包括:获取所述应用程序的加固壳程序的源代码;根据所述加固壳程序的源代码的代码结构,将所述加固壳程序的源代码按执行顺序划分为多个部分。
B10、如B8或B9所述的方法,其中,该方法还包括:
依照各部分代码的执行顺序,为每部分代码分配相应的编号。
本发明的实施例还公开了C11、一种对应用程序崩溃进行定位的装置,其中,所述应用程序根据运行顺序被划分为多个阶段,该装置包括:
记录单元,适于在应用程序的每个阶段运行结束后,记录该阶段的运行成功信息;
获取单元,适于在应用程序发生崩溃时,获取最后一次记录的运行成功信息;
定位单元,适于根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
C12、如C11所述的装置,其中,
所述记录单元包括:与每个阶段对应的记录子单元;
所述记录子单元,适于记录其对应的阶段的运行成功信息。
C13、如C12所述的装置,其中,
所述记录单元,适于以指定变量记录各阶段的运行成功信息。
C14、如C13所述的装置,其中,
各所述记录子单元中预设有与相应阶段对应的阶段编号;
所述记录单元,还适于在应用程序运行后,将所述指定变量初始化;
所述记录子单元,适于将所述指定变量的值置为与该记录子单元对应的阶段的阶段编号。
C15、如C14所述的装置,其中,
所述获取单元,适于在应用程序发生崩溃时,获取所述指定变量的值。
C16、如C11所述的装置,其中,
所述定位单元,适于将最后一次记录的运行成功信息上报至应用程序的服务器,由服务器根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
本发明的实施例还公开了D17、一种对应用程序崩溃进行定位的装置,其中,该装置包括:
分析单元,适于将应用程序根据运行顺序划分为多个阶段;
修改单元,将如C11-C16中任一项所述的装置打包到应用程序的安装包中。
D18、如D17所述的装置,其中,
所述分析单元,适于获取所述应用程序的源代码,根据所述应用程序的源代码的代码结构,将所述应用程序的源代码按执行顺序划分为多个部分。
D19、如D18所述的装置,其中,所述应用程序为经过加固的应用程序;
所述分析单元,适于获取所述应用程序的加固壳程序的源代码,根据所述加固壳程序的源代码的代码结构,将所述加固壳程序的源代码按执行顺序划分为多个部分。
D20、如D18或D19所述的装置,其中,
所述修改单元,适于依照各部分代码的执行顺序,为每部分代码分配相应的编号。

Claims (14)

1.一种对应用程序崩溃进行定位的方法,其中,所述应用程序根据运行顺序被划分为多个阶段,该方法包括:
在应用程序的每个阶段运行结束后,记录该阶段的运行成功信息;
在应用程序发生崩溃时,获取最后一次记录的运行成功信息;
根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段;
所述记录该阶段的运行成功信息包括:
由与每个阶段对应的运行记录插件记录该阶段的运行成功信息;
该方法还包括:
以指定变量记录各阶段的运行成功信息;
在各运行记录插件中预设与相应阶段对应的阶段编号;在应用程序运行后,将所述指定变量初始化;
所述由与每个阶段对应的运行记录插件记录该阶段的运行成功信息包括:将所述指定变量的值置为与该阶段对应的阶段编号。
2.如权利要求1所述的方法,其中,所述在应用程序发生崩溃时,获取最后一次记录的运行成功信息包括:
在应用程序发生崩溃时,获取所述指定变量的值。
3.如权利要求1所述的方法,其中,所述根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段包括:
将最后一次记录的运行成功信息上报至应用程序的服务器,由服务器根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
4.一种对应用程序崩溃进行定位的方法,其中,该方法包括:
将应用程序根据运行顺序划分为多个阶段;
将对应用程序崩溃进行定位的执行代码打包到应用程序的安装包中,所述对应用程序崩溃进行定位的执行代码适于执行如权利要求1-3中任一项所述的方法。
5.如权利要求4所述的方法,其中,所述将应用程序根据运行顺序划分为多个阶段包括:
获取所述应用程序的源代码;
根据所述应用程序的源代码的代码结构,将所述应用程序的源代码按执行顺序划分为多个部分。
6.如权利要求5所述的方法,其中,所述应用程序为经过加固的应用程序;
该方法还包括:获取所述应用程序的加固壳程序的源代码;根据所述加固壳程序的源代码的代码结构,将所述加固壳程序的源代码按执行顺序划分为多个部分。
7.如权利要求5或6所述的方法,其中,该方法还包括:
依照各部分代码的执行顺序,为每部分代码分配相应的编号。
8.一种对应用程序崩溃进行定位的装置,其中,所述应用程序根据运行顺序被划分为多个阶段,该装置包括:
记录单元,适于在应用程序的每个阶段运行结束后,记录该阶段的运行成功信息;
获取单元,适于在应用程序发生崩溃时,获取最后一次记录的运行成功信息;
定位单元,适于根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段;
所述记录单元包括:与每个阶段对应的记录子单元;
所述记录子单元,适于记录其对应的阶段的运行成功信息;
所述记录单元,适于以指定变量记录各阶段的运行成功信息;
各所述记录子单元中预设有与相应阶段对应的阶段编号;
所述记录单元,还适于在应用程序运行后,将所述指定变量初始化;
所述记录子单元,适于将所述指定变量的值置为与该记录子单元对应的阶段的阶段编号。
9.如权利要求8所述的装置,其中,
所述获取单元,适于在应用程序发生崩溃时,获取所述指定变量的值。
10.如权利要求8所述的装置,其中,
所述定位单元,适于将最后一次记录的运行成功信息上报至应用程序的服务器,由服务器根据最后一次记录的运行成功信息,确定该应用程序成功运行的最后一个阶段,以及确定该阶段的下一个阶段为发生崩溃的阶段。
11.一种对应用程序崩溃进行定位的装置,其中,该装置包括:
分析单元,适于将应用程序根据运行顺序划分为多个阶段;
修改单元,将如权利要求8-10中任一项所述的装置打包到应用程序的安装包中。
12.如权利要求11所述的装置,其中,
所述分析单元,适于获取所述应用程序的源代码,根据所述应用程序的源代码的代码结构,将所述应用程序的源代码按执行顺序划分为多个部分。
13.如权利要求12所述的装置,其中,所述应用程序为经过加固的应用程序;
所述分析单元,适于获取所述应用程序的加固壳程序的源代码,根据所述加固壳程序的源代码的代码结构,将所述加固壳程序的源代码按执行顺序划分为多个部分。
14.如权利要求12或13所述的装置,其中,
所述修改单元,适于依照各部分代码的执行顺序,为每部分代码分配相应的编号。
CN201611207121.9A 2016-12-23 2016-12-23 对应用程序崩溃进行定位的方法和装置 Active CN106649114B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611207121.9A CN106649114B (zh) 2016-12-23 2016-12-23 对应用程序崩溃进行定位的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611207121.9A CN106649114B (zh) 2016-12-23 2016-12-23 对应用程序崩溃进行定位的方法和装置

Publications (2)

Publication Number Publication Date
CN106649114A CN106649114A (zh) 2017-05-10
CN106649114B true CN106649114B (zh) 2019-05-31

Family

ID=58828218

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611207121.9A Active CN106649114B (zh) 2016-12-23 2016-12-23 对应用程序崩溃进行定位的方法和装置

Country Status (1)

Country Link
CN (1) CN106649114B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107861830A (zh) * 2017-12-01 2018-03-30 深圳乐信软件技术有限公司 应用程序崩溃的检测方法、装置、存储介质及移动终端
CN108763060A (zh) * 2018-04-27 2018-11-06 广州华多网络科技有限公司 Android系统中Native层崩溃溯源方法、装置、存储介质及终端
CN111752599A (zh) * 2020-06-23 2020-10-09 厦门美柚股份有限公司 应用程序的异常处理方法、装置、终端及介质
CN112866022B (zh) * 2021-01-12 2023-06-02 北京小米移动软件有限公司 一种降低调制解调器系统崩溃次数的方法、装置及介质
CN113127248B (zh) * 2021-04-02 2022-08-09 清华大学 面向机器人ros程序的自动崩溃恢复方法和系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08185338A (ja) * 1994-12-28 1996-07-16 Sharp Corp デバッグ装置
CN103049373A (zh) * 2012-11-29 2013-04-17 北京奇虎科技有限公司 一种崩溃的定位方法和装置
US9239773B1 (en) * 2014-10-29 2016-01-19 Cadence Design Systems, Inc. Method and system for debugging a program that includes declarative code and procedural code
CN105630659A (zh) * 2015-12-23 2016-06-01 北京奇虎科技有限公司 应用崩溃日志的获取方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08185338A (ja) * 1994-12-28 1996-07-16 Sharp Corp デバッグ装置
CN103049373A (zh) * 2012-11-29 2013-04-17 北京奇虎科技有限公司 一种崩溃的定位方法和装置
US9239773B1 (en) * 2014-10-29 2016-01-19 Cadence Design Systems, Inc. Method and system for debugging a program that includes declarative code and procedural code
CN105630659A (zh) * 2015-12-23 2016-06-01 北京奇虎科技有限公司 应用崩溃日志的获取方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"程序调试中的错误定位方法";师军;《微计算机应用》;19980930;第19卷(第5期);第277-278页第2.2节

Also Published As

Publication number Publication date
CN106649114A (zh) 2017-05-10

Similar Documents

Publication Publication Date Title
CN106649114B (zh) 对应用程序崩溃进行定位的方法和装置
US10635576B2 (en) Branch coverage guided symbolic execution for hybrid fuzz testing of software binaries
US10353882B2 (en) Packaging data science operations
US9274930B2 (en) Debugging system using static analysis
US7178135B2 (en) Scope-based breakpoint selection and operation
CN105204916B (zh) 基于环境变量的项目进程运行方法及装置
CN106021101B (zh) 对移动终端进行测试的方法及装置
US20030188301A1 (en) Code coverage with an integrated development environment
CN106708704A (zh) 一种对崩溃日志进行分类的方法和装置
CN109614103A (zh) 一种基于字符的代码补全方法及系统
KR20180129623A (ko) 연관된 다중 파일 정적 분석 장치
CN109992511A (zh) 获取代码测试覆盖率的装置及方法
CN111580789B (zh) 功能块框架生成
US8689196B2 (en) Display of data from parallel programming contexts
CN117251298B (zh) 一种流水线任务循环执行方法、系统、设备及介质
CN107291619A (zh) 内存占用分析方法及装置
US9436587B2 (en) Test context generation
US8621430B2 (en) Method for code transformation supporting temporal abstraction of parameters
CN109558184A (zh) 浏览器启动方法和装置
EP2820547B1 (en) Debugging method and computer program product
CN109299005A (zh) 测试脚本的生成方法及装置
CN106547548B (zh) 一种软件版本的编译方法和装置
CN113238967A (zh) 测试案例的生成方法及装置
CN115408001A (zh) 基于低代码开发平台的数据可视化应用解耦的方法
CN108460276A (zh) 一种安卓安装包的动态链接库so文件的处理方法和装置

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
TR01 Transfer of patent right

Effective date of registration: 20211203

Address after: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, high tech Zone, Binhai New Area, Tianjin

Patentee after: 3600 Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20230714

Address after: 1765, floor 17, floor 15, building 3, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: Beijing Hongxiang Technical Service Co.,Ltd.

Address before: 300450 No. 9-3-401, No. 39, Gaoxin 6th Road, Binhai Science Park, high tech Zone, Binhai New Area, Tianjin

Patentee before: 3600 Technology Group Co.,Ltd.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: 1765, floor 17, floor 15, building 3, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: Beijing 360 Zhiling Technology Co.,Ltd.

Country or region after: China

Address before: 1765, floor 17, floor 15, building 3, No. 10 Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee before: Beijing Hongxiang Technical Service Co.,Ltd.

Country or region before: China

CP03 Change of name, title or address