CN113110952A - 获取应用程序中的sdk异常信息的方法和装置 - Google Patents

获取应用程序中的sdk异常信息的方法和装置 Download PDF

Info

Publication number
CN113110952A
CN113110952A CN202110382345.8A CN202110382345A CN113110952A CN 113110952 A CN113110952 A CN 113110952A CN 202110382345 A CN202110382345 A CN 202110382345A CN 113110952 A CN113110952 A CN 113110952A
Authority
CN
China
Prior art keywords
sdk
information
abnormal
stack information
exception
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
Application number
CN202110382345.8A
Other languages
English (en)
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 Wodong Tianjun Information Technology Co Ltd
Original Assignee
Beijing Wodong Tianjun Information 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 Wodong Tianjun Information Technology Co Ltd filed Critical Beijing Wodong Tianjun Information Technology Co Ltd
Priority to CN202110382345.8A priority Critical patent/CN113110952A/zh
Publication of CN113110952A publication Critical patent/CN113110952A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种获取应用程序中的SDK异常信息的方法和装置,包括:获取关于应用程序崩溃的异常堆栈信息,其中应用程序为SDK的宿主程序;分析异常堆栈信息,以确定异常堆栈信息中是否包含SDK的特征字符;将包含SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储。本发明实现了在应用程序崩溃时从记载崩溃信息的异常堆栈信息中及时并自动地对SDK异常信息的精准定位和筛选,从而缩短了开发人员对应用程序进行bug排查的时间。其中,利用混淆关键词进行SDK异常信息获取既能避免代码截获和破译,又能避免未知的侵权风险。本发明优化了应用程序中对SDK的质量监控和反馈流程,提升了SDK异常排查的整体效率。

Description

获取应用程序中的SDK异常信息的方法和装置
技术领域
本发明涉及计算机技术领域,特别涉及一种获取应用程序中的SDK异常信息的方法和装置。
背景技术
SDK(Software Development Kit),即软件开发工具包,是指为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。
在对SDK进行开发维护,对外发布,接入到外部应用软件中以后,需要主动、及时地获知SDK在实际的应用程序(SDK的宿主程序)中的运行情况和健壮性,其中一项关键的指标就是崩溃率。进而如何准确地定位区分每次程序的崩溃是发生在SDK中还是SDK的宿主程序,便成为需要解决的问题。
现有的获知SDK崩溃数据的方式主要为以下两种:
(一)依赖于测试人员的手工测试来保证SDK的健壮性,在宿主程序发布后,依赖于宿主程序自身的崩溃监控和开发反馈来获知其中SDK的运行情况和崩溃数据。
(二)对于采用如安卓系统得移动终端,提供的异常崩溃接口获得宿主程序的全部的崩溃信息,然后将全部的崩溃信息向对接系统进行上报,由对接系统在全部的崩溃信息中查询关于SDK的崩溃数据。
其中,方式(一)中,开发人员无法在第一时间得到SDK的运行状态和崩溃的准确信息,无法及时修复问题,对宿主程序的响应周期长。方式(二)中,崩溃信息的数据量较大,全部上报会消耗较大的流量,有违安卓系统的SDK的轻量原则,导致SDK消耗流量严重;另外将宿主程序的全部崩溃信息上报,若其中包含敏感信息则会存在侵权风险;上报全部崩溃信息会导致后端服务(如SDK崩溃数据分析服务)压力大、维护成本高;另外,大量冗余的崩溃信息对后期分析定位排查问题也会造成巨大的干扰。
因此,如何针对应用程序崩溃时的SDK异常信息进行精准定位筛选,便成为亟待解决的问题。
发明内容
有鉴于此,本发明提供一种获取应用程序中的SDK异常信息的方法和装置,以在应用程序崩溃时能够从崩溃信息中及时对SDK异常信息进行精准定位筛选,进而及时准确发现与SDK相关的崩溃信息,缩短开发人员对应用程序的bug(漏洞)排查时间,提高异常信息上传效率。
本发明的技术方案是这样实现的:
一种获取应用程序中的SDK异常信息的方法,包括:
获取关于应用程序崩溃的异常堆栈信息,其中所述应用程序为SDK的宿主程序;
分析所述异常堆栈信息,以确定所述异常堆栈信息中是否包含所述SDK的特征字符;
将包含所述SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储。
进一步,所述SDK的特征字符包括与所述SDK相对应的混淆关键词;
所述的确定所述异常堆栈信息中是否包含所述SDK的特征字符,包括:
确定所述异常堆栈信息中是否包含与所述SDK相对应的混淆关键词;
所述的将包含所述SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储,包括:
将包含与所述SDK相对应的混淆关键词的异常堆栈信息标记为所述SDK相关异常信息进行存储;
其中,与所述SDK相对应的混淆关键词记录于混淆字典中,所述混淆字典用于所述应用程序在开发阶段的代码混淆。
进一步,所述SDK的特征字符包括所述SDK的名称;
所述的确定所述异常堆栈信息中是否包含所述SDK的特征字符,包括:
确定所述异常堆栈信息中是否包含所述SDK的名称;
所述的将包含所述SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储,包括:
将包含所述SDK的名称的异常堆栈信息标记为所述SDK相关异常信息进行存储。
进一步,所述方法还包括:
分析所述异常堆栈信息,以确定所述异常堆栈信息中是否包含所述应用程序的名称;
根据所述异常堆栈信息中是否包含所述应用程序的名称,以及是否包含所述SDK的特征字符,对所述异常堆栈信息进行归类。
进一步,所述的根据所述异常堆栈信息中是否包含所述应用程序的名称,以及是否包含所述SDK的特征字符,对所述异常堆栈信息进行归类,包括:
若所述异常堆栈信息中不包含所述应用程序的名称,而包含所述SDK的特征字符,则将所述异常堆栈信息归类为SDK崩溃;
若所述异常堆栈信息中既包含所述应用程序的名称,并且也包含所述SDK的特征字符,则将所述异常堆栈信息归类为SDK关联崩溃;
若所述异常堆栈信息中包含所述应用程序的名称,而不包含所述SDK的特征字符,则将所述异常堆栈信息归类为宿主程序崩溃;
若所述异常堆栈信息中既不包含所述应用程序的名称,并且也不包含所述SDK的特征字符,则将所述异常堆栈信息归类为其它类崩溃;
其中,所述SDK相关异常信息包括归类为所述SDK崩溃和所述SDK关联崩溃的异常堆栈信息。
进一步,所述方法还包括:
将所述SDK相关异常信息通过网络上传至异常分析系统。
进一步,所述的将所述SDK相关异常信息通过网络上传至异常分析系统,包括:
当所述应用程序再次启动时,由所述应用程序将所述SDK相关异常信息上传至所述异常分析系统。
一种获取应用程序中的SDK异常信息的装置,包括:
异常堆栈信息获取模块,用于获取关于应用程序崩溃的异常堆栈信息,其中所述应用程序为SDK的宿主程序;
异常堆栈信息分析模块,用于分析所述异常堆栈信息,以确定所述异常堆栈信息中是否包含所述SDK的特征字符;
SDK异常信息标记存储模块,用于将包含所述SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储。
一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如上任一项所述的获取应用程序中的SDK异常信息的方法中的步骤。
一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如上任一项所述的获取应用程序中的SDK异常信息的方法中的步骤。
从上述方案可以看出,本发明的获取应用程序中的SDK异常信息的方法和装置,实现了在应用程序崩溃时从记载崩溃信息的异常堆栈信息中及时并自动地对SDK异常信息的精准定位和筛选,从而缩短了开发人员对应用程序进行bug排查的时间。其中,利用混淆关键词进行SDK异常信息获取时,上报的SDK相关异常信息包含的是混淆关键词的内容,一方面这些混淆关键词并没有具体的含义,即使上报过程中的SDK相关异常信息被截获也无法对应用程序进行破译,另一方面也能够避免因为未进行代码混淆而上传SDK中相关变量名称、方法名称所可能导致的未知的侵权风险。本发明的技术方案实现了SDK相关异常信息的及时准确的自动获取,使得SDK的开发者能够及时获知SDK的运行状态和崩溃率,以快速修复问题,发布新的版本。本发明的获取应用程序中的SDK异常信息的方法和装置,优化了应用程序中对SDK的质量监控和反馈流程,提升SDK异常排查的整体的效率。
附图说明
图1为本发明实施例的获取应用程序中的SDK异常信息的方法示意图;
图2为采用本发明实施例进行SDK异常的判定分类的流程实例示意图;
图3为本发明实施例的获取应用程序中的SDK异常信息的装置示意图;
图4为结合本发明实施例的方法的程序开发、SDK异常获取的流程示意图;
图5为本发明实施例中的电子设备示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
如图1所示,本发明实施例提供的获取应用程序中的SDK异常信息的方法,主要包括以下步骤:
步骤a1、获取关于应用程序崩溃的异常堆栈信息,其中应用程序为SDK的宿主程序;
步骤a2、分析异常堆栈信息,以确定异常堆栈信息中是否包含SDK的特征字符;
步骤a3、将包含SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储。
其中,宿主程序是指SDK所处的软件环境,即某个SDK需要运行在某个应用程序,那么这个应用程序就是这个SDK的宿主程序。需要说明的是,同一个宿主程序下可以包含多个SDK。
采用本发明实施例的获取应用程序中的SDK异常信息的方法,在异常堆栈信息中,利用对SDK的特征字符的搜索或者匹配,而筛选出与SDK相关的异常信息,进而实现了在应用程序崩溃时从记载崩溃信息的异常堆栈信息中及时对SDK异常信息的精准定位和筛选,从而缩短了开发人员对应用程序进行bug排查的时间。
针对于安卓系统下的应用程序,一般采用Java语言进行开发。Java是一种跨平台的、解释型语言,Java源代码编译成中间“字节码”存储于class文件中。由于跨平台的需要,Java字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问变量和方法,这些符号带有许多语义信息,很容易被反编译成Java源代码。所以,对于Java开发的程序而言,为避免反编译带来的风险,一般采用代码混淆手段将Java代码转换为无意义字母、符号组合,以增加代码理解难度,即使对代码混淆后的程序进行反编译,也使得反编译后的代码难以理解。
在上述代码混淆手段的前提下,在可选实施例中,SDK的特征字符包括与SDK相对应的混淆关键词;
步骤a2中的确定异常堆栈信息中是否包含SDK的特征字符,具体包括:确定异常堆栈信息中是否包含与SDK相对应的混淆关键词;
步骤a3的将包含SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储,具体包括:将包含与SDK相对应的混淆关键词的异常堆栈信息标记为SDK相关异常信息进行存储;
其中,与SDK相对应的混淆关键词记录于混淆字典中,混淆字典用于应用程序在开发阶段的代码混淆。
另外,在某些特殊情况下,在软件开发时不需要代码混淆,这样当应用程序崩溃时,异常堆栈信息中的内容会直接反应出应用程序中的具有含义或已知的信息(如变量名、方法名等)。在这种前提下,在可选实施例中,SDK的特征字符包括SDK的名称;
步骤a2中的确定异常堆栈信息中是否包含SDK的特征字符,具体包括:确定异常堆栈信息中是否包含SDK的名称;
步骤a3的将包含SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储,具体包括:将包含SDK的名称的异常堆栈信息标记为SDK相关异常信息进行存储。
对于应用程序崩溃而言,存在几种可能:其一,应用程序(SDK的宿主程序)产生的崩溃,并且这种崩溃和其中的SDK相关,这种崩溃在本发明实施例中称为SDK关联崩溃;其二,应用程序(SDK的宿主程序)产生的崩溃,但是这种崩溃和其中的SDK不相关,这种崩溃在本发明实施例中称为宿主程序崩溃;其三,SDK本身产生的崩溃,并且这种崩溃和宿主程序不相关,这种崩溃在本发明实施例中称为SDK崩溃;其四,崩溃既不是应用程序(SDK的宿主程序)所产生,也不是其中的SDK所产生,这种崩溃在本发明实施例中称为其它类崩溃。补充说明的是,运行应用程序(SDK的宿主程序)的系统可能会出现除应用程序以外的其它原因所引起的崩溃,产生这种崩溃时可能也会产生异常堆栈信息,但此时的异常堆栈信息与所运行应用程序和其中的SDK均不相关,所以异常堆栈信息中并不存在与应用程序和其中的SDK相关的任何信息,在可选实施例中,为了确认崩溃是否由应用程序(SDK的宿主程序)或者其中的SDK引起,需要在每次产生异常堆栈信息时均执行一次本发明实施例的获取应用程序中的SDK异常信息的方法,来确定该崩溃是否与SDK的宿主程序和/或其中的SDK相关。
基于此,本发明实施例的获取应用程序中的SDK异常信息的方法还可进一步包括:
步骤b1、分析异常堆栈信息,以确定异常堆栈信息中是否包含应用程序的名称;
步骤b2、根据异常堆栈信息中是否包含应用程序的名称,以及是否包含SDK的特征字符,对异常堆栈信息进行归类。
上述确定异常堆栈信息中是否包含应用程序的名称的步骤(步骤b1)和对异常堆栈信息进行归类的步骤(步骤b2)在步骤a1之后执行。具体地,确定异常堆栈信息中是否包含应用程序的名称的步骤(步骤b1)可以在步骤a1和步骤a2之间执行,可以在步骤a2和步骤a3之间执行也可以在步骤a3以后执行,对异常堆栈信息进行归类的步骤(步骤b2)可以在步骤a2和步骤a3之间执行,也可以在步骤a3以后执行。由于对异常堆栈信息进行归类的步骤(步骤b2)是在获取异常堆栈信息中是否包含应用程序的名称,以及是否包含SDK的特征字符的前提下才能执行,所以需要确保对异常堆栈信息进行归类的步骤(步骤b2)是在确定异常堆栈信息中是否包含应用程序的名称的步骤(步骤b1)和步骤a2之后执行。
在可选实施中,步骤b2具体包括:
步骤b21、若异常堆栈信息中不包含应用程序的名称,而包含SDK的特征字符,则将异常堆栈信息归类为SDK崩溃;
步骤b22、若异常堆栈信息中既包含应用程序的名称,并且也包含SDK的特征字符,则将异常堆栈信息归类为SDK关联崩溃;
步骤b23、若异常堆栈信息中包含应用程序的名称,而不包含SDK的特征字符,则将异常堆栈信息归类为宿主程序崩溃;
步骤b24、若异常堆栈信息中既不包含应用程序的名称,并且也不包含SDK的特征字符,则将异常堆栈信息归类为其它类崩溃。
其中,SDK相关异常信息包括归类为SDK崩溃和SDK关联崩溃的异常堆栈信息。
上述步骤b21至步骤b24之间没有先后执行顺序限制。针对本发明实施例的目的,需要重点关注应用程序的SDK相关异常信息,所以只需将步骤b21和步骤b22所筛选出的SDK崩溃和SDK关联崩溃进行标记。基于本发明实施例的精神,若需要获取步骤b23和/或步骤b24的宿主程序崩溃和/或其它类崩溃信息,则需要将步骤b23和/或步骤b24所筛选出的宿主程序崩溃和/或其它类崩溃进行标记。
在筛选出SDK相关异常信息后,需要开发人员对SDK相关异常信息进行分析,然而,执行应用程序的系统往往并非是用于执行异常分析的平台,所以,在优选实施例中,需要将SDK相关异常信息转移到异常分析平台。基于此,本发明实施例还可进一步包括:
将SDK相关异常信息通过网络上传至异常分析系统。其中,异常分析系统即为上述的异常分析平台。
在优选实施例中,所述的将SDK相关异常信息通过网络上传至异常分析系统,包括:
当应用程序再次启动时,由应用程序将SDK相关异常信息上传至异常分析系统。
由于应用程序中存在的bug在程序开发阶段全部被发现的难度较大。所以,无论是在开发阶段、测试阶段还是在后期的应用阶段,都可能随时出现异常而崩溃,而本发明实施例的获取应用程序中的SDK异常信息的方法,可以应用于开发阶段、测试阶段、应用阶段中的任何一个阶段。
例如在开发阶段或测试阶段,测试装置中所安装开发测试阶段的应用程序崩溃时,测试装置执行本发明实施例的方法,测试装置通过网络(互联网或者开发测试内部的局域网)将SDK相关异常信息上传至异常分析系统,开发人人员、维护人员就可以通过异常分析系统对SDK相关异常信息进行分析,以及时修改程序代码消除bug。
例如在应用阶段,用户装置中所安装应用程序崩溃时,用户装置执行本发明实施例的方法,用户装置通过网络(互联网)将SDK相关异常信息上传至异常分析系统,开发人人员、维护人员就可以通过异常分析系统对SDK相关异常信息进行分析,以在下次程序版本中解决产生崩溃的问题。
在优选的实施方式中,对崩溃信息的上报是由应用程序本身所执行,这样做可以不需要对运行应用程序的系统进行相关的功能开发,在应用程序本身的开发时,将相关的崩溃信息上报功能整合到应用程序本身即可,然而,当崩溃出现使得应用程序意外推出后,应用程序便无法执行当前产生的崩溃信息,所以,优选地,采用当应用程序再次启动时,由应用程序将SDK相关异常信息上传至异常分析系统的方式,能够在程序再次启动时及时地将SDK相关异常信息进行上报。并且采用这种方式,在开发阶段或测试阶段,开发测试人员对SDK相关异常信息的上报只需要再次运行程序,不需要额外过多的工作,在应用阶段,结合用户的使用习惯,当应用程序崩溃而意外推出后,用户还会再次打开应用程序,所以也不会给用户带来过多的操作步骤而引起不适。
需要进一步说明的是,在异常堆栈信息中包含与SDK相对应的混淆关键词的实施例中,异常分析系统一侧保存有该应用程序的混淆字典,异常分析系统基于该混淆字典的记载,从SDK相关异常信息中取得相应的具有含义的变量名、方法名等信息,以辅助开发维护人员对SDK相关异常信息的分析。
图2示出了采用本发明实施例进行SDK异常的判定分类的一个流程实例,该流程实例主要包括以下步骤。
步骤c1、分析异常堆栈信息,之后进入步骤c2。
其中,在可选实施例中,采用逐行解析的方式对异常堆栈信息进行分析。
步骤c2、判断分析结果中是否含有宿主程序的名称,如果是则执行步骤c3,否则执行步骤c4。
步骤c3、判断分析结果中是否含有SDK的名称和/或SDK相对应的混淆关键词,如果是则进入步骤c5,否则进入步骤c6。
步骤c4、判断分析结果中是否含有SDK的名称和/或SDK相对应的混淆关键词,如果是则进入步骤c7,否则进入步骤c8。
步骤c5、将异常堆栈信息归类为SDK关联崩溃,之后结束SDK异常的判定分类的流程。
步骤c6、将异常堆栈信息归类为宿主程序崩溃,之后结束SDK异常的判定分类的流程。
步骤c7、将异常堆栈信息归类为SDK崩溃,之后结束SDK异常的判定分类的流程。
步骤c8、将异常堆栈信息归类为其它类崩溃,之后结束SDK异常的判定分类的流程。
其中,步骤c8为可选步骤,在不加入步骤c8时,在步骤c4中如果判断结果为否则不执行任何后续相关步骤(即不对异常堆栈信息进行归类)。
结合上述获取应用程序中的SDK异常信息的方法,本发明实施例还提供了一种获取应用程序中的SDK异常信息的装置,如图3所示,包括:
异常堆栈信息获取模块1,用于获取关于应用程序崩溃的异常堆栈信息,其中应用程序为SDK的宿主程序;
异常堆栈信息分析模块2,用于分析异常堆栈信息,以确定异常堆栈信息中是否包含SDK的特征字符;
SDK异常信息标记存储模块3,用于将包含SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储。
以下,以安卓系统应用程序为例,对本发明的获取应用程序中的SDK异常信息的方法进行进一步说明。
如图4所示,在程序开发阶段,利用SDK源代码(SDK Source Code)进行编译,生成字节码(Java Bytecode)后,利用后端系统(辅助程序开发和/或提供相关资源和/或进行异常分析的系统)提供的自定义混淆字典对字节码进行代码混淆(利用ProGuard工具),生成优化的字节码(Optimized Java Bytecode),之后对优化的字节码再次编译(Dex编译器)得到编译后的字节码,最后生成可运行的机器码(Machine Code)。应用程序(即可运行的机器码)运行并发生崩溃时,依赖于安卓系统提供的唯一的异常捕获类Thread.UncaughtExceptionHandler,取得崩溃的详细堆栈信息。根据后端系统下发的策略(后端系统包含配置策略管理功能)对所捕获的异常堆栈信息进行关于SDK相关异常信息的获取,该过程采用上述实施所述的获取应用程序中的SDK异常信息的方法的步骤。其中,在一个可选实施例中,通过对异常堆栈信息执行逐行扫描的方式来解析其中的所包含的应用程序(SDK的宿主程序)名称和SDK的特征字符(与SDK相对应的混淆关键词);在可选实施例中,首先判断异常堆栈信息是否包含应用程序(SDK的宿主程序):如果包含则继续解释异常堆栈信息是否包含与SDK相对应的混淆关键词,如果包含与SDK相对应的混淆关键词,则将异常堆栈信息归类为SDK关联崩溃,如果不包含与SDK相对应的混淆关键词,则将异常堆栈信息归类为宿主程序崩溃;如果不包含则继续解释异常堆栈信息是否包含与SDK相对应的混淆关键词,如果包含与SDK相对应的混淆关键词,则将异常堆栈信息归类为SDK崩溃,如果不包含与SDK相对应的混淆关键词,则将异常堆栈信息归类为其它类崩溃。本发明实施例是为了获取SDK异常信息,其中需求的是SDK关联崩溃和SDK崩溃,所以在本发明实施例中,将归类为SDK关联崩溃和SDK崩溃的异常堆栈信息进行标记并持久化到SDK异常信息数据库中。在应用程序再次启动时通过网络上报至后端系统,由后端系统的数据管理模块进行储存,以便于后端系统中的异常分析模块对上报的SDK相关异常信息进行分析。上报成功后,后端系统可通过先前分配的关键字对不同的SDK的崩溃信息进行分类汇总,通知到不同的SDK的开发者。
根据需求,后端系统下发的策略可以包括:是否上报全部崩溃信息、是否启用SDK崩溃上报、是否启用SDK关联崩溃上报、是否启用去重优化、以及上报频次限制等策略。
本发明实施例还同时提供一种非易失性计算机可读存储介质,该非易失性计算机可读存储介质存储指令,该指令在由处理器执行时使得所述处理器执行如上述说明中的获取应用程序中的SDK异常信息的方法中的各个步骤。
本发明实施例还同时提供一种执行获取应用程序中的SDK异常信息的方法的电子设备,如图5所示,该电子设备包括:至少一个处理器10以及存储器20。存储器20和至少一个处理器10通信连接,例如存储器20和至少一个处理器10通过总线连接。存储器20存储有可被至少一个处理器10执行的指令,所述指令被至少一个处理器10执行,以使至少一个处理器10执行如上述说明中的获取应用程序中的SDK异常信息的方法中的各个步骤。
本发明实施例的获取应用程序中的SDK异常信息的方法和装置,实现了在应用程序崩溃时从记载崩溃信息的异常堆栈信息中及时并自动地对SDK异常信息的精准定位和筛选,从而缩短了开发人员对应用程序进行bug排查的时间。其中,利用混淆关键词进行SDK异常信息获取时,上报的SDK相关异常信息包含的是混淆关键词的内容,一方面这些混淆关键词并没有具体的含义,即使上报过程中的SDK相关异常信息被截获也无法对应用程序进行破译,另一方面也能够避免因为未进行代码混淆而上传SDK中相关变量名称、方法名称所可能导致的未知的侵权风险。本发明实施例的技术方案实现了SDK相关异常信息的及时准确的自动获取,使得SDK的开发者能够及时获知SDK的运行状态和崩溃率,以快速修复问题,发布新的版本。本发明实施例的获取应用程序中的SDK异常信息的方法和装置,优化了应用程序中对SDK的质量监控和反馈流程,提升SDK异常排查的整体的效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种获取应用程序中的SDK异常信息的方法,包括:
获取关于应用程序崩溃的异常堆栈信息,其中所述应用程序为SDK的宿主程序;
分析所述异常堆栈信息,以确定所述异常堆栈信息中是否包含所述SDK的特征字符;
将包含所述SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储。
2.根据权利要求1所述的获取应用程序中的SDK异常信息的方法,其特征在于:
所述SDK的特征字符包括与所述SDK相对应的混淆关键词;
所述的确定所述异常堆栈信息中是否包含所述SDK的特征字符,包括:
确定所述异常堆栈信息中是否包含与所述SDK相对应的混淆关键词;
所述的将包含所述SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储,包括:
将包含与所述SDK相对应的混淆关键词的异常堆栈信息标记为所述SDK相关异常信息进行存储;
其中,与所述SDK相对应的混淆关键词记录于混淆字典中,所述混淆字典用于所述应用程序在开发阶段的代码混淆。
3.根据权利要求1所述的获取应用程序中的SDK异常信息的方法,其特征在于:
所述SDK的特征字符包括所述SDK的名称;
所述的确定所述异常堆栈信息中是否包含所述SDK的特征字符,包括:
确定所述异常堆栈信息中是否包含所述SDK的名称;
所述的将包含所述SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储,包括:
将包含所述SDK的名称的异常堆栈信息标记为所述SDK相关异常信息进行存储。
4.根据权利要求1所述的获取应用程序中的SDK异常信息的方法,其特征在于,所述方法还包括:
分析所述异常堆栈信息,以确定所述异常堆栈信息中是否包含所述应用程序的名称;
根据所述异常堆栈信息中是否包含所述应用程序的名称,以及是否包含所述SDK的特征字符,对所述异常堆栈信息进行归类。
5.根据权利要求4所述的获取应用程序中的SDK异常信息的方法,其特征在于,所述的根据所述异常堆栈信息中是否包含所述应用程序的名称,以及是否包含所述SDK的特征字符,对所述异常堆栈信息进行归类,包括:
若所述异常堆栈信息中不包含所述应用程序的名称,而包含所述SDK的特征字符,则将所述异常堆栈信息归类为SDK崩溃;
若所述异常堆栈信息中既包含所述应用程序的名称,并且也包含所述SDK的特征字符,则将所述异常堆栈信息归类为SDK关联崩溃;
若所述异常堆栈信息中包含所述应用程序的名称,而不包含所述SDK的特征字符,则将所述异常堆栈信息归类为宿主程序崩溃;
若所述异常堆栈信息中既不包含所述应用程序的名称,并且也不包含所述SDK的特征字符,则将所述异常堆栈信息归类为其它类崩溃;
其中,所述SDK相关异常信息包括归类为所述SDK崩溃和所述SDK关联崩溃的异常堆栈信息。
6.根据权利要求1所述的应用程序中的SDK异常信息的方法,其特征在于,所述方法还包括:
将所述SDK相关异常信息通过网络上传至异常分析系统。
7.根据权利要求6所述的应用程序中的SDK异常信息的方法,其特征在于,所述的将所述SDK相关异常信息通过网络上传至异常分析系统,包括:
当所述应用程序再次启动时,由所述应用程序将所述SDK相关异常信息上传至所述异常分析系统。
8.一种获取应用程序中的SDK异常信息的装置,其特征在于,包括:
异常堆栈信息获取模块,用于获取关于应用程序崩溃的异常堆栈信息,其中所述应用程序为SDK的宿主程序;
异常堆栈信息分析模块,用于分析所述异常堆栈信息,以确定所述异常堆栈信息中是否包含所述SDK的特征字符;
SDK异常信息标记存储模块,用于将包含所述SDK的特征字符的异常堆栈信息标记为SDK相关异常信息进行存储。
9.一种非易失性计算机可读存储介质,所述非易失性计算机可读存储介质存储指令,其特征在于,所述指令在由处理器执行时使得所述处理器执行如权利要求1至7中任一项所述的获取应用程序中的SDK异常信息的方法中的步骤。
10.一种电子设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如权利要求1至7中任一项所述的获取应用程序中的SDK异常信息的方法中的步骤。
CN202110382345.8A 2021-04-09 2021-04-09 获取应用程序中的sdk异常信息的方法和装置 Pending CN113110952A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110382345.8A CN113110952A (zh) 2021-04-09 2021-04-09 获取应用程序中的sdk异常信息的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110382345.8A CN113110952A (zh) 2021-04-09 2021-04-09 获取应用程序中的sdk异常信息的方法和装置

Publications (1)

Publication Number Publication Date
CN113110952A true CN113110952A (zh) 2021-07-13

Family

ID=76714962

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110382345.8A Pending CN113110952A (zh) 2021-04-09 2021-04-09 获取应用程序中的sdk异常信息的方法和装置

Country Status (1)

Country Link
CN (1) CN113110952A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023138382A1 (zh) * 2022-01-19 2023-07-27 北京有竹居网络技术有限公司 一种崩溃信息收集方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108052406A (zh) * 2017-12-08 2018-05-18 北京奇虎科技有限公司 终端程序异常关闭信息处理方法、装置、终端
CN110489345A (zh) * 2019-08-08 2019-11-22 北京字节跳动网络技术有限公司 一种崩溃聚合方法、装置、介质和设备
CN110647472A (zh) * 2019-09-27 2020-01-03 北京博睿宏远数据科技股份有限公司 崩溃信息统计方法、装置、计算机设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108052406A (zh) * 2017-12-08 2018-05-18 北京奇虎科技有限公司 终端程序异常关闭信息处理方法、装置、终端
CN110489345A (zh) * 2019-08-08 2019-11-22 北京字节跳动网络技术有限公司 一种崩溃聚合方法、装置、介质和设备
CN110647472A (zh) * 2019-09-27 2020-01-03 北京博睿宏远数据科技股份有限公司 崩溃信息统计方法、装置、计算机设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023138382A1 (zh) * 2022-01-19 2023-07-27 北京有竹居网络技术有限公司 一种崩溃信息收集方法及装置

Similar Documents

Publication Publication Date Title
You et al. Profuzzer: On-the-fly input type probing for better zero-day vulnerability discovery
Abal et al. Variability bugs in highly configurable systems: A qualitative analysis
US8132156B2 (en) Methods and systems for testing tool with comparative testing
CN107368417B (zh) 一种漏洞挖掘技术测试模型的测试方法
US9880832B2 (en) Software patch evaluator
NL2029881B1 (en) Methods and apparatus for automatic detection of software bugs
US20180060224A1 (en) Distinguishing Public and Private Code in Testing Environments
CN112181833A (zh) 一种智能化模糊测试方法、装置及系统
US7322026B2 (en) Scoring assertions
CN1908895A (zh) 验证应用程序全球化问题的系统和方法及计算机产品
CN112131120B (zh) 一种源代码缺陷检测方法及装置
CN112131122A (zh) 一种源代码缺陷检测工具误报评估方法及装置
Lyu et al. Goshawk: Hunting memory corruptions via structure-aware and object-centric memory operation synopsis
CN113110952A (zh) 获取应用程序中的sdk异常信息的方法和装置
CN113157565B (zh) 一种基于种子用例突变的反馈式js引擎模糊测试方法及装置
Wang et al. Demystifying regular expression bugs: A comprehensive study on regular expression bug causes, fixes, and testing
Lavoie et al. A case study of TTCN-3 test scripts clone analysis in an industrial telecommunication setting
CN113051582B (zh) 一种计算机软件技术开发调试系统
Liu et al. PF-Miner: A practical paired functions mining method for Android kernel in error paths
US7318221B2 (en) Windows™ F-language interpreter
CN114116471A (zh) 一种自动化代码扫描方法、系统、电子设备与存储介质
WO2023101574A1 (en) Method and system for static analysis of binary executable code
CN110096281B (zh) 代码解析方法、解析服务器、存储介质及装置
CN112464237A (zh) 一种静态代码安全诊断方法及装置
Ponomarenko et al. A combined technique for automatic detection of backward binary compatibility problems

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