首页> 中国专利> 映射关系建立方法、装置及系统崩溃分流的方法与装置

映射关系建立方法、装置及系统崩溃分流的方法与装置

摘要

本发明涉及移动通信技术领域,公开一种用于系统崩溃分流的映射关系建立方法、建立装置、方法及装置,该系统至少包括由来自多个业务组件的源码和静态库经编译链接生成的应用程序。所述建立方法包括:提取多个业务组件的目录,目录包括业务组件与关于源码信息的编译文件之间的对应关系;对来自多个业务组件的源码及静态库进行编译链接,以生成包括与源码信息相对应的符号的偏移量与编译文件之间的对应关系的链接对应关系文件;及基于业务组件与编译文件之间的对应关系及偏移量与编译文件之间的对应关系,建立应用程序、业务组件及偏移量之间的第一映射关系。本发明在不受编码规范影响的情况下,可将系统崩溃分流到对应的业务组件,且准确率高。

著录项

  • 公开/公告号CN110704302A

    专利类型发明专利

  • 公开/公告日2020-01-17

    原文格式PDF

  • 申请/专利权人 贝壳技术有限公司;

    申请/专利号CN201910824937.3

  • 发明设计人 赵宏伟;李翔宇;

    申请日2019-09-02

  • 分类号

  • 代理机构北京润平知识产权代理有限公司;

  • 代理人肖冰滨

  • 地址 300280 天津市滨海新区南港工业区综合服务区办公楼C座一层112室05单元

  • 入库时间 2023-12-17 06:34:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-10

    授权

    授权

  • 2020-03-17

    专利申请权的转移 IPC(主分类):G06F11/36 登记生效日:20200227 变更前: 变更后: 申请日:20190902

    专利申请权、专利权的转移

  • 2020-02-18

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20190902

    实质审查的生效

  • 2020-01-17

    公开

    公开

说明书

技术领域

本发明涉及移动通信技术领域,具体地涉及用于系统崩溃分流的映射关系建立方法、建立装置、用于系统崩溃分流的方法及装置。

背景技术

第三方的系统崩溃(Crash)平台无法在iOS应用程序(App)发生崩溃后,将崩溃起因分发到具体的业务线及平台。目前,各大公司内部的分流方案是简单通过匹配符号前缀来确定导致系统崩溃的业务方,其中,符号是指用于标识被编译的源码的函数、属性、类名、变量名等等信息。

现有技术中所采用的上述用于系统崩溃分流的方法具有以下缺点:1、第三方无法执行分流工作;2、受编码规范的影响大且准确率不稳定。

发明内容

本发明的目的是提供一种用于系统崩溃分流的映射关系建立方法、建立装置、用于系统崩溃分流的方法及装置,其在不受编码规范影响的情况下,可将系统崩溃分流到对应的业务组件(即业务方),且准确率高。

为了实现上述目的,本发明一方面提供一种用于系统崩溃分流的映射关系的建立方法,该系统至少包括由来自多个业务组件的源码和静态库经过编译及链接生成的应用程序,该建立方法包括:提取多个业务组件的目录,该目录包括业务组件与关于源码信息的编译文件之间的对应关系;对来自所述多个业务组件的源码及静态库进行编译与链接,以生成关于所述应用程序的链接对应关系文件,该链接对应关系文件包括与所述源码信息相对应的符号的偏移量与所述编译文件之间的对应关系;以及基于所述业务组件与所述编译文件之间的对应关系及所述符号的偏移量与所述编译文件之间的对应关系,建立所述应用程序、所述业务组件及所述符号的偏移量之间的第一映射关系。

优选地,在所述系统还包括来自所述多个业务组件中的一者或多者的动态库的情况下,该建立方法还包括:导出所述动态库的源码信息相对应的符号的偏移量;以及建立所述动态库、所述业务组件及所述符号的偏移量之间的第二映射关系。

优选地,所述导出所述动态库的源码信息相对应的符号的偏移量包括:采用快速查看工具Objdump导出所述动态库的源码信息相对应的符号的偏移量。

本发明第二方面提供一种用于系统崩溃分流的映射关系的建立装置,该系统至少包括由来自多个业务组件的源码和静态库经过编译及链接生成的应用程序,该建立装置包括:提取模块,用于提取多个业务组件的目录,该目录包括业务组件与关于源码信息的编译文件之间的对应关系;生成模块,用于对来自所述多个业务组件的源码及静态库进行编译与链接,以生成关于所述应用程序的链接对应关系文件,该链接对应关系文件包括与所述源码信息相对应的符号的偏移量与所述编译文件之间的对应关系;以及第一映射关系建立模块,用于基于所述业务组件与所述编译文件之间的对应关系及所述符号的偏移量与所述编译文件之间的对应关系,建立所述应用程序、所述业务组件及所述符号的偏移量之间的第一映射关系。

优选地,在所述系统还包括来自所述多个业务组件中的一者或多者的动态库的情况下,该建立装置还包括:导出模块,用于导出所述动态库的源码信息相对应的符号的偏移量;以及第二映射关系建立模块,用于建立所述动态库、所述业务组件及所述符号的偏移量之间的第二映射关系。

优选地,所述导出模块用于导出所述动态库的源码信息相对应的符号的偏移量包括:采用快速查看工具Objdump导出所述动态库的源码信息相对应的符号的偏移量。

通过上述技术方案,本发明创造性地首先提取多个业务组件与关于源码信息的编译文件之间的对应关系;然后对来自所述多个业务组件的源码与静态库进行编译与链接,从而生成与所述源码信息相对应的符号的偏移量与所述编译文件之间的对应关系;最后基于上述两个对应关系,建立应用程序、业务组件及符号的偏移量之间的映射关系,由此,在不受编码规范影响的情况下,基于所建立的所述映射关系可确定导致系统崩溃的业务组件(即业务方),且准确率高。

本发明第三方面提供一种用于系统崩溃分流的方法,该系统至少包括由来自多个业务组件的源码和静态库经过编译及链接生成的应用程序,该方法包括:基于系统崩溃信息,获取导致系统崩溃的应用程序及相应的与来自所述多个业务组件中的一个或多个第一业务组件的源码信息相对应的符号的偏移量;以及基于所述的用于系统崩溃分流的映射关系的建立方法所建立的第一映射关系、所述应用程序及相应的所述符号的偏移量,确定导致系统崩溃的所述第一业务组件。

优选地,在所述系统还包括来自所述多个业务组件中的一者或多者的动态库的情况下,该方法还包括:基于所述系统崩溃信息,获取导致系统崩溃的动态库及相应的与来自所述多个业务组件中的一个或多个第二业务组件的源码信息相对应的符号的偏移量;以及基于所述的用于系统崩溃分流的映射关系的建立方法所建立的第二映射关系、所述动态库及相应的所述符号的偏移量,确定导致系统崩溃的所述第二业务组件。

本发明第四方面提供一种用于系统崩溃分流的装置,该系统至少包括由来自多个业务组件的源码和静态库经过编译及链接生成的应用程序,该装置包括:第一获取模块,用于基于系统崩溃信息,获取导致系统崩溃的应用程序与相应的与来自所述多个业务组件中的一个或多个第一业务组件的源码信息相对应的符号的偏移量;以及第一确定模块,用于基于所述的用于系统崩溃分流的映射关系的建立装置所建立的第一映射关系、所述应用程序及相应的所述符号的偏移量,确定导致系统崩溃的所述第一业务组件。

优选地,在所述系统还包括来自所述多个业务组件中的一者或多者的动态库的情况下,该装置还包括:第二获取模块,用于基于所述系统崩溃信息,获取导致系统崩溃的动态库与相应的与来自所述多个业务组件中的一个或多个第二业务组件的源码信息相对应的符号的偏移量;以及第二确定模块,用于基于所述的用于系统崩溃分流的映射关系的建立装置所建立的第二映射关系、所述动态库及相应的所述符号的偏移量,确定导致系统崩溃的所述第二业务组件。

通过上述技术方案,本发明创造性地通过系统崩溃信息可获取导致系统崩溃的应用程序及相应的与来自多个业务组件中的一个或多个业务组件的源码信息相对应的符号的偏移量;然后在不受编码规范影响的情况下,结合所建立的应用程序、业务组件及符号的偏移量之间的映射关系,可确定导致系统崩溃的业务组件,且准确率高。

本发明第五方面提供一种机器可读存储介质,所述机器可读存储介质上存储有指令,该指令用于使得机器执行所述的用于系统崩溃分流的映射关系的建立方法或所述的用于系统崩溃分流的方法。

本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:

图1是本发明一实施例提供的用于系统崩溃分流的映射关系的建立方法的流程图;

图2是本发明一实施例提供的用于系统崩溃分流的映射关系的建立过程的示意图;

图3是本发明一实施例提供的用于系统崩溃分流的映射关系的建立装置的结构图;

图4是本发明一实施例提供的用于系统崩溃分流的方法的流程图;

图5是本发明一实施例提供的用于系统崩溃分流的过程的示意图;以及

图6是本发明一实施例提供的用于系统崩溃分流的装置的结构图。

附图标记说明

10提取模块20生成模块

30第一映射关系建立模块40第一获取模块

50第一确定模块

具体实施方式

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

一个系统至少可包括应用程序(App),该App由来自多个业务组件的源码和静态库经过编译及链接过程生成,故在系统崩溃的情况下,可通过本发明所提供的技术方案对导致系统崩溃的APP对应的源码所属的业务组件进行追踪溯源。另外,APP在运行过程中可能会调用动态库,故除了App之外,所述系统还有可能包括动态库。由此,本发明还提供了对导致系统崩溃的动态库对应的源码所属的业务组件进行追踪溯源的技术方案。

在详细描述本发明的各个实施例之前,对本发明所涉及的几个概念进行简单的介绍。

符号:程序中的源码部分包含函数、属性、类名及变量名等源码信息,在对源码进行编译时,采用一种标识来表示所述源码信息,并使用这种标识来进行链接。其中,这种标识被称为符号。

编译文件:被写入源码信息并作为编译单元参与编译的文件被称为编译文件。

偏移量(offset):程序中的源码经过编译和链接之后会生成一个产物(动态库或者App),而每个函数、属性、类名及变量名等源码信息所对应的符号会存放在这个产物中。一旦生成产物,每个函数、属性、类名及变量名等源码信息所对应的符号存放的位置相对于编译文件本身所存放的位置就会产生一个“偏移量”,这个“偏移量”被称为符号的偏移量。当产物被加载到内存中时,这个偏移量是不会变化的。

业务组件:每个业务方的代码以“业务组件”的形式接入系统,其中,所述业务组件可包括源码及静态库与动态库中的至少一者。

图1是本发明一实施例提供的用于系统崩溃分流的映射关系的建立方法的流程图。在系统至少包括应用程序的情况下,如图1所示,所述建立方法可包括如下步骤:步骤S101,提取多个业务组件的目录,该目录包括业务组件与关于源码信息的编译文件之间的对应关系;步骤S102,对来自所述多个业务组件的源码及静态库进行编译与链接,以生成关于所述应用程序的链接对应关系文件,该链接对应关系文件包括与所述源码信息相对应的符号的偏移量与所述编译文件之间的对应关系;以及步骤S103,基于所述业务组件与所述编译文件之间的对应关系及所述符号的偏移量与所述编译文件之间的对应关系,建立所述应用程序、所述业务组件及所述符号的偏移量之间的第一映射关系。

对于步骤S101,可使用脚本提取每个业务组件对应的具体目录,也就是说,可使用脚本提取每个业务组件与关于源码信息的编译文件之间的对应关系。

对于步骤S102,如图2所示,对来自业务组件A的源码与静态库、及来自业务组件B的源码进行编译与链接,可生成应用程序(App)及关于该App的链接对应关系文件(AppLinkMapFile)。具体地,所述关于该App的链接对应关系文件可包括与源码信息相对应的符号的偏移量与编译文件之间的对应关系,即所述关于该App的链接对应关系文件可标明每一个符号的偏移量所对应的编译文件,如图2所示。例如,符号的偏移量为偏移量1所对应的编译文件为编译文件1;以及符号的偏移量为偏移量2所对应的编译文件为编译文件2等。

对于步骤S103,基于步骤S101所提取的业务组件与编译文件之间的对应关系及步骤S102所生成的符号的偏移量与编译文件之间的对应关系,可获取App业务组件的偏移表,该App业务组件的偏移表展示了App、业务组件及符号的偏移量之间的第一映射关系。例如,对于APP而言,偏移量为偏移量1与偏移量2的符号所对应的源码信息来自业务组件A;偏移量为偏移量3与偏移量4的符号所对应的源码信息来自业务组件B。

在所述系统还包括来自所述多个业务组件中的一者或多者的动态库的情况下,该建立方法还可包括:导出所述动态库的源码信息相对应的符号的偏移量;以及建立所述动态库、所述业务组件及所述符号的偏移量之间的第二映射关系。

由于动态库已经被编译并链接完成,并不能提取得到与动态库相应的链接对应关系文件,故可采用其他方式获取动态库的源码信息相对应的符号的偏移量。具体地,所述导出所述动态库的源码信息相对应的符号的偏移量可包括:采用快速查看工具Objdump导出所述动态库的源码信息相对应的符号的偏移量,如图2所示。例如,对于动态库B,所导出的偏移量表显示偏移量1与偏移量2。

在系统崩溃的情况下,由于崩溃日志(Crash log)会显示导致崩溃的App或动态库及对应的符号的偏移量,故结合上述所建立的所述应用程序、所述业务组件及所述符号的偏移量之间的第一映射关系及所述动态库、所述业务组件及所述符号的偏移量之间的第二映射关系,可确定导致系统崩溃的具体业务组件。

综上所述,本发明创造性地首先提取多个业务组件与关于源码信息的编译文件之间的对应关系;然后对来自所述多个业务组件的源码与静态库进行编译与链接,从而生成与所述源码信息相对应的符号的偏移量与所述编译文件之间的对应关系;最后基于上述两个对应关系,建立应用程序、业务组件及符号的偏移量之间的映射关系,由此,在不受编码规范影响的情况下,基于所建立的所述映射关系可确定导致系统崩溃的业务组件(即业务方),且准确率高。

图3是本发明一实施例提供的用于系统崩溃分流的映射关系的建立装置的结构图。在所述系统至少包括由来自多个业务组件的源码和静态库经过编译及链接生成的应用程序(App)的情况下,如图3所示,所述建立装置可包括:提取模块10,用于提取多个业务组件的目录,该目录包括业务组件与关于源码信息的编译文件之间的对应关系;生成模块20,用于对来自所述多个业务组件的源码及静态库进行编译与链接,以生成关于所述应用程序的链接对应关系文件,该链接对应关系文件包括与所述源码信息相对应的符号的偏移量与所述编译文件之间的对应关系;以及第一映射关系建立模块30,用于基于所述业务组件与所述编译文件之间的对应关系及所述符号的偏移量与所述编译文件之间的对应关系,建立所述应用程序、所述业务组件及所述符号的偏移量之间的第一映射关系。

优选地,在所述系统还包括来自所述多个业务组件中的一者或多者的动态库的情况下,该建立装置还包括:导出模块,用于导出所述动态库的源码信息相对应的符号的偏移量;以及第二映射关系建立模块,用于建立所述动态库、所述业务组件及所述符号的偏移量之间的第二映射关系。

优选地,所述导出模块用于导出所述动态库的源码信息相对应的符号的偏移量包括:采用快速查看工具Objdump导出所述动态库的源码信息相对应的符号的偏移量。

有关本发明提供的用于系统崩溃分流的映射关系的建立装置的细节及益处可参阅上述针对用于系统崩溃分流的映射关系的建立方法的描述,于此不再赘述。

图4是本发明一实施例提供的用于系统崩溃分流的方法的流程图。如图4所示,在所述系统至少包括由来自多个业务组件的源码和静态库经过编译及链接生成的应用程序(App)的情况下,所述用于系统崩溃分流的方法可包括以下步骤:步骤S401,基于系统崩溃信息,获取导致系统崩溃的应用程序及相应的与来自所述多个业务组件中的一个或多个第一业务组件的源码信息相对应的符号的偏移量;以及步骤S402,基于所述的用于系统崩溃分流的映射关系的建立方法所建立的第一映射关系、所述应用程序及相应的所述符号的偏移量,确定导致系统崩溃的所述第一业务组件。

在所述系统还包括来自所述多个业务组件中的一者或多者的动态库的情况下,该方法还可包括:基于所述系统崩溃信息,获取导致系统崩溃的动态库及相应的与来自所述多个业务组件中的一个或多个第二业务组件的源码信息相对应的符号的偏移量;以及基于所述的用于系统崩溃分流的映射关系的建立方法所建立的第二映射关系、所述动态库及相应的所述符号的偏移量,确定导致系统崩溃的所述第二业务组件。

其中,所述第二业务组件可以与所述第一业务组件相同,也可以与所述第一业务组件不同。

具体地,如图5所示,以iOS系统为例,当系统发生崩溃后,崩溃日志(Crash log)中的每行内容表明导致系统崩溃的App或动态库及其对应的符号的偏移量,然而第一行内容表示系统信息(可忽略)。故在本发明的分流策略中,不考虑第一行内容。

如图5所示,若崩溃日志显示导致崩溃的App及对应的符号的偏移量1,则从上述所建立的所述应用程序、所述业务组件及所述符号的偏移量之间的第一映射关系(例如,图5中的App业务组件的偏移表)及所述动态库、所述业务组件及所述符号的偏移量之间的第二映射关系(例如,图5中的动态库B业务组件的偏移表)中,先找到App业务组件的偏移表,然后在该偏移表中查找偏移量1所属的业务组件A。对于崩溃日志所显示的导致崩溃的App及对应的符号的偏移量2的部分,可执行类似的操作,于此不再赘述,可从App业务组件的偏移表中查找到偏移量2所属的业务组件B。

如图5所示,若崩溃日志显示导致崩溃的动态库B及对应的符号的偏移量1,则从上述所建立的所述应用程序、所述业务组件及所述符号的偏移量之间的第一映射关系(例如,图5中的App业务组件的偏移表)及所述动态库、所述业务组件及所述符号的偏移量之间的第二映射关系(例如,图5中的动态库B业务组件的偏移表)中,先找到动态库B业务组件的偏移表,然后在该偏移表中查找偏移量1所属的业务组件B。对于崩溃日志所显示的导致崩溃的动态库B及对应的符号的偏移量2的部分,可执行类似的操作,于此不再赘述,可从动态库B业务组件的偏移表中查找到偏移量2所属的业务组件B,由此可在不需要人工定义及维护规则且不依赖崩溃日志的符号的情况下,完成分流任务,分流准确率可达到99%,且也不对业务方的开发人员编码产生影响。

综上所述,本发明创造性地通过系统崩溃信息可获取导致系统崩溃的应用程序及相应的与来自多个业务组件中的一个或多个业务组件的源码信息相对应的符号的偏移量;然后在不受编码规范影响的情况下,结合所建立的应用程序、业务组件及符号的偏移量之间的映射关系,可确定导致系统崩溃的业务组件,且准确率高。

图6是本发明一实施例提供的用于系统崩溃分流的装置的结构图。在所述系统至少包括由来自多个业务组件的源码和静态库经过编译及链接生成的应用程序的情况下,如图6所示,所述用于系统崩溃分流的装置可包括:第一获取模块40,用于基于系统崩溃信息,获取导致系统崩溃的应用程序与相应的与来自所述多个业务组件中的一个或多个第一业务组件的源码信息相对应的符号的偏移量;以及第一确定模块50,用于基于所述的用于系统崩溃分流的映射关系的建立装置所建立的第一映射关系、所述应用程序及相应的所述符号的偏移量,确定导致系统崩溃的所述第一业务组件。

在所述系统还包括来自所述多个业务组件中的一者或多者的动态库的情况下,该装置还可包括:第二获取模块,用于基于所述系统崩溃信息,获取导致系统崩溃的动态库与相应的与来自所述多个业务组件中的一个或多个第二业务组件的源码信息相对应的符号的偏移量;以及第二确定模块,用于基于所述的用于系统崩溃分流的映射关系的建立装置所建立的第二映射关系、所述动态库及相应的所述符号的偏移量,确定导致系统崩溃的所述第二业务组件。

有关本发明提供的用于系统崩溃分流的装置的细节及益处可参阅上述针对用于系统崩溃分流的方法的描述,于此不再赘述。

相应地,本发明一实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有指令,该指令用于使得机器执行所述的用于系统崩溃分流的映射关系的建立方法或所述的用于系统崩溃分流的方法。

所述机器可读存储介质包括但不限于相变内存(相变随机存取存储器的简称,Phase Change Random Access Memory,PRAM,亦称为RCM/PCRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体(Flash Memory)或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备等各种可以存储程序代码的介质。

以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。

此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号