堆栈分析方法及相关装置制造方法及图纸

技术编号:16662736 阅读:88 留言:0更新日期:2017-11-30 11:53
本发明专利技术提供了堆栈分析方法及相关装置,以实现对堆栈进行分类。在本申请所提供的堆栈分析方法中,获取进程崩溃产生的各堆栈;所述堆栈为多层数据结构,每一层数据为一数据帧;相邻两数据帧按照调用顺序组成的向量为路段;根据获取的各堆栈中路段的权重进行分类,得到至少一个堆栈类;其中,属于同一堆栈类的堆栈两两间的相似度大于或不小于相似度阈值。可见,在本申请实施例中,创造性得提出每一层数据为一数据帧,相邻两数据帧按照调用顺序组成的向量为路段。在分类时,将彼此相似度的堆栈归为一类,从而实现了对堆栈的分类。同时,由于属于同一类的堆栈彼此相似,其解决方案或问题根源也近乎相同,后续可节省针对性修复的时间,提高处理效率。

【技术实现步骤摘要】
堆栈分析方法及相关装置
本专利技术涉及计算机
,更具体的,涉及堆栈分析方法及相关装置。
技术介绍
应用软件,例如智能终端游戏在崩溃(crash)时会产生dump文件,dump文件中的堆栈信息可用于分析崩溃原因,从而可依据崩溃原因有针对性的对应用程序进行修复。每次crash都会上传dump文件,进而可获取到相应的堆栈信息。在堆栈数据海量的情况下,如何对堆栈进行分析,成为目的亟待解决的问题。
技术实现思路
有鉴于此,本专利技术实施例提供堆栈分析方法及相关装置,以实现对堆栈进行分类。为实现上述目的,本专利技术实施例提供如下技术方案:一种堆栈分析方法,包括:获取进程崩溃产生的各堆栈;所述堆栈为多层数据结构,每一层数据为一数据帧;相邻两数据帧按照调用顺序组成的向量为路段;根据获取的各堆栈中路段的权重进行分类,得到至少一个堆栈类;其中,属于同一堆栈类的堆栈两两间的相似度大于或不小于相似度阈值。一种堆栈分析装置,包括:获取单元,用于获取进程崩溃产生的各堆栈;所述堆栈为多层数据结构,每一层数据为一数据帧;相邻两数据帧按照调用顺序组成的向量为路段;分类单元,用于根据获取的各堆栈中路段的权重进行分类,得到至少一个堆栈类;其中,属于同一堆栈类的堆栈两两间的相似度大于或不小于相似度阈值。一种堆栈分析系统,至少包括堆栈分析服务器,所述堆栈分析服务器包括上述的堆栈分析装置。可见,在本申请实施例中,创造性得提出每一层数据为一数据帧,相邻两数据帧按照调用顺序组成的向量为路段。在分类时,是根据所述路段的权重对各堆栈进行分类的,其中,属于同一堆栈类的任意两堆栈的相似度大于或不小于相似度阈值。这样,本申请实施例将相似度大于或不小于相似度阈值的堆栈归为一类,从而实现了对堆栈的分类。同时,由于属于同一类的堆栈彼此相似,其解决方案或问题根源也近乎相同,因此,后续可节省针对性修复的时间,提高了处理效率。此外,在本申请提供的分类过程中,考虑了堆栈的层次以及堆栈中不同位置的重要性,贴合了堆栈的特点,其分类结果相对现有聚类方式更为准确。附图说明图1a、图1b为本专利技术实施例提供的堆栈分析系统;图2a为本专利技术实施例提供的堆栈分析服务器的示例性结构图;图2b为本专利技术实施例提供的堆栈分析装置的示例性结构图;图3、10为本专利技术实施例提供的堆栈分析方法的示例性流程图;图4为本专利技术实施例提供的堆栈示意图;图5为本专利技术实施例提供的路段划分示意图;图6为本专利技术实施例提供的路段权重计算示意图;图7为本专利技术实施例提供的展示界面示意图;图8为本专利技术实施例提供的并列展示的堆栈示意图;图9为本专利技术实施例提供的展示解决方案的示意图;图11为本专利技术实施例提供的指定路段的示意图。具体实施方式一个进程每次崩溃(crash)都会产生一个dump文件,进而可获取到相应的堆栈信息(可称为crash堆栈),本文后续所提及的堆栈均为进程crash时产生的堆栈信息。以大型游戏开发厂商为例,仅从手游中选取160余个项目,每小时就会产生200万~300万次crash,每次crash都会上传dump文件,因此,堆栈数据也是海量的。在堆栈数据海量的情况下,业界的通用做法是聚类分析。目前业界针对堆栈的聚类比较原始和简单,通常将去除干扰因素后文本完全一致的堆栈分为一类,也即将完全相同的堆栈聚为一类。在聚类时,使用的是现有的文本匹配算法,例如Google的Simhash算法。然而,专利技术人在研发本专利技术创造时发现,在很多情况下,尽管两堆栈信息并不完全相同,但它们的问题根源是相同的。而根据现有的聚类方式,上述两堆栈却会被分至不同的堆栈类,认为其对应不同的问题根源(或crash原因)。因此,现有的聚类方式的召回率很低,实际价值不大。另外,现有的聚类方式是针对文本进行匹配的。对于普通文本而言,现有的聚类方式是可行的。然而堆栈信息并非普通的文本,其特殊之处在于:一,堆栈是有层次的,为多层数据结构,每层数据对应一个函数,相邻层次之间有先后调用关系;二,堆栈的栈顶位置是程序最终崩溃的位置。通常情况下,越是靠近栈顶,所提供给开发者的有用信息越多,越重要。普通的文本匹配算法也并未利用堆栈的上述两特点进行聚类,这影响了其聚类效果。有鉴于此,本申请提供的堆栈分析方法及相关装置(例如堆栈分析装置、堆栈分析服务器和堆栈分析系统),以对堆栈进行分类,并解决上述提及的问题。图1a示出了上述堆栈分析系统的一种示例性结构,包括:汇集服务器101,前端服务器(web服务器)102和堆栈分析服务器103。其中,汇集服务器101可负责将各客户端进程上报的dump文件,进而获取到dump文件中的堆栈,并提供给堆栈分析服务器103。堆栈分析服务器103可用于将相似的堆栈聚为一类,最终得到多个堆栈类,在同一堆栈类中堆栈拥有近乎相同的解决方案或者问题根源。前端服务器102可用于展示聚类结果。用户可通过访问web站点(前端服务器102)来获得聚类结果。图1b示出了上述堆栈分析系统的另一种示例性结构,在图1b所示结构中,汇集服务器101和堆栈分析服务器103可集成在同一服务器上,或者,汇集服务器101和前端服务器102可集成在同一服务器上。需要说明的是,在图1a和图1b中,虽然各类服务器的数量为一个,但本领域技术人员可以理解的是,可根据实际需要对各类服务器的数量进行灵活设计。图2a示出了上述堆栈分析服务器103的一种通用计算机系统结构。上述计算机系统可包括总线、处理器1、存储器2、通信接口3、输入设备4和输出设备5。处理器1、存储器2、通信接口3、输入设备4和输出设备5通过总线相互连接。其中:总线可包括一通路,在计算机系统各个部件之间传送信息。处理器1可以是通用处理器,例如通用中央处理器(CPU)、网络处理器(NetworkProcessor,简称NP)、微处理器等,也可以是特定应用集成电路(application-specificintegratedcircuit,ASIC),或一个或多个用于控制本专利技术方案程序执行的集成电路。还可以是数字信号处理器(DSP)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。处理器1可包括主处理器(CPU)。处理器1的个数可为一个或多个。存储器2中保存有执行本专利技术技术方案的程序,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器2可以包括只读存储器(read-onlymemory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(randomaccessmemory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。输入设备4可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。输出设备5可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。通信接口3可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。处理器1通过执行存储器2中所存放的程序以及调用其他设备,可实现下述实施例提供的堆栈分析方法。而前述堆栈分析装置可以软件的形式或硬件的形式本文档来自技高网...
堆栈分析方法及相关装置

【技术保护点】
一种堆栈分析方法,其特征在于,包括:获取进程崩溃产生的各堆栈;所述堆栈为多层数据结构,每一层数据对应一个函数,相邻两层数据对应的函数之间存在调用关系,所述堆栈的栈顶位置是进程崩溃的位置;每一层数据为一数据帧,相邻两数据帧按照调用顺序组成的向量为路段;根据获取的各堆栈中路段的权重进行分类,得到至少一个堆栈类;其中,属于同一堆栈类的堆栈两两间的相似度大于或不小于相似度阈值;任一路段的权重至少根据所述任一路段中数据帧的位置决定,所述权重用于表征所述任一路段在堆栈中的重要程度。

【技术特征摘要】
1.一种堆栈分析方法,其特征在于,包括:获取进程崩溃产生的各堆栈;所述堆栈为多层数据结构,每一层数据对应一个函数,相邻两层数据对应的函数之间存在调用关系,所述堆栈的栈顶位置是进程崩溃的位置;每一层数据为一数据帧,相邻两数据帧按照调用顺序组成的向量为路段;根据获取的各堆栈中路段的权重进行分类,得到至少一个堆栈类;其中,属于同一堆栈类的堆栈两两间的相似度大于或不小于相似度阈值;任一路段的权重至少根据所述任一路段中数据帧的位置决定,所述权重用于表征所述任一路段在堆栈中的重要程度。2.如权利要求1所述的方法,其特征在于,所述根据获取的各堆栈中路段的权重进行分类,得到至少一个堆栈类包括:对所述获取的各堆栈进行预划分,得到至少一个预划分集合;获取目标堆栈对应的目标集合;所述目标堆栈为任一未分类堆栈;在所述目标集合中,任一堆栈的至少一个路段与所述目标堆栈的指定路段相同;将所述至少一个预划分集合和所述目标集合进行取交集计算,得到目标交集集合;对所述目标交集集合中的堆栈两两计算相似度,按相似度进行分类,得到包含所述目标堆栈的堆栈类;其中,任意两堆栈间的相似度acc根据上述任意两堆栈所包含路段的权重和散列值计算得到。3.如权利要求2所述的方法,其特征在于,所述获取的各堆栈进行预划分,得到至少一个预划分集合包括:按关键词对所述获取的各堆栈进行预划分,得到至少一个关键词集合;任一关键词集合中的堆栈包含相同的关键词;按项目对所述获取的各堆栈进行预划分,得到至少一个项目集合;同一项目集合中堆栈的项目相同;所述关键词集合和所述项目集合均为预划分集合。4.如权利要求3所述的方法,其特征在于,所述获取目标堆栈对应的目标集合包括:按路段的散列值对所述获取的各堆栈进行预划分,得到至少一个散列值集合;任一散列值集合对应的散列值不同于其他散列值集合,所述任一散列值集合中的堆栈包含具有相同散列值的路段;从所述至少一个散列值集合中,获取所述指定路段的散列值所对应的散列值集合;所述目标集合包括所述指定路段的散列值所对应的散列值集合。5.如权利要求2-4任一项所述的方法,其特征在于,所述目标堆栈的指定路段通过如下方式确定:将所述目标堆栈中连续M层数据帧对应的M-1个路段作为所述指定路段;其中,所述连续M层数据帧中包括顶层数据帧;所述M为所述目标堆栈的最少命中层数,所述M根据所述目标堆栈的总层数N计算得到;所述连续M层数据帧对应的路段的权重之和,与所述目标堆栈的权重总和的比值,不大于所述相似度阈值m。6.如权利要求1所述的方法,其特征在于,任意两堆栈表示为第一堆栈和第二堆栈,任意两堆栈间的相似度acc通过如下方式计算:确定所述第一堆栈与所述第二堆栈之间散列值相同的路段;所述散列值相同的路段表示为相同路段;将所述相同路段在所述第一堆栈中对应...

【专利技术属性】
技术研发人员:阎超魏学峰严明邱学倩罗章龙黄斌
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1