一种程序崩溃分析方法及系统与流程

文档序号:11154837阅读:913来源:国知局
一种程序崩溃分析方法及系统与制造工艺

本发明涉及计算机信息处理技术领域,具体涉及一种程序崩溃分析方法及系统。



背景技术:

随着计算机应用的发展,满足用户各种计算机应用程序层出不穷。然而,应用程序运行过程中,有时会发生程序崩溃的现象,无论是指针越界还是非法操作,都将给系统造成巨大的损失。但在一个大型系统的测试过程中,初期出现程序崩溃似乎成了不可避免的事。

因此,亟需一种在应用程序发生崩溃的时候记录下产品崩溃的原因,以方便产品开发人员及时定位到程序的出错的代码,提高代码的质量及产品的稳定性的技术方案。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种程序崩溃分析方法及系统,可便捷的抓取应用程序的崩溃信息生成dump文件并上传至服务器进行分析。

为达到以上目的,本发明采取的技术方案是:一种程序崩溃分析方法,其特征在于:在应用程序中集成breakpad工具,在应用程序发生崩溃时,使用breakpad工具抓取应用程序崩溃信息,生成转储dump文件并写入指定的目录下,再将dump文件上传至服务器。

在上述技术方案的基础上,将dump文件上传至服务器后,获取应用程序用到的所有共享库so文件的符号文件;分析dump文件,得到产生崩溃的原因,出错的代码,调用的函数;通过出错的代码和调用的函数查找符号文件获得出错的代码对应的原始代码行号和原始代码文件。

在上述技术方案的基础上,所述符号文件包括函数名,原始代码行号和原始代码文件名。

在上述技术方案的基础上,在应用程序中集成breakpad工具时,预定义dump文件存放的目录。

在上述技术方案的基础上,所述breakpad工具抓取应用程序崩溃信息生成转储dump文件并写入指定的目录下。

在上述技术方案的基础上,使用网络套接字将dump文件上传到服务器。

本发明还公开了一种程序崩溃分析系统,包括:

breakpad集成模块,用于在应用程序中集成breakpad工具:

转储文件生成模块,用于在应用程序发生崩溃时,找到出错的代码,生成dump文件并写入指定的目录下;

转储文件上传模块,用于将dump文件上传至服务器。

在上述技术方案的基础上,breakpad集成模块还用于预定义dump文件存放的目录。

在上述技术方案的基础上,所述程序崩溃分析系统还包括:

符号文件生成模块,用于获取应用程序用到的所有so文件的符号文件;

转储文件分析模块,用于分析dump文件,得到产生崩溃的原因和得到函数调用链,通过符号文件获得出错的代码对应的的原始代码行号和原始代码文件。

在上述技术方案的基础上,所述符号文件包括函数名,原始代码行号和原始代码文件名。

与现有技术相比,本发明的优点在于:

1、本发明通过将在应用程序中集成breakpad工具,在应用程序发生崩溃时,使用breakpad工具找到出错的代码,生成dump文件并写入指定的目录下,再将dump文件上传至服务器,即可将所有出错的代码收集并上传至服务器分析。

2、本文通过在应用程序中集成breakpad工具,获取应用程序用到的所有so文件的符号文件;分析dump文件,得到产生崩溃的原因和得到函数调用链,再通过符号文件获得出错的代码对应的的原始代码行号和原始代码文件,比较方便的就能找到产生崩溃的原因了。极大的节省了人力成本,也能够及时的分析dump文件及早的发现问题。

附图说明

图1为本发明实施例中一种程序崩溃分析方法的流程示意图;

图2为本发明实施例中一种程序崩溃分析系统的结构示意图。

图中:1-breakpad集成模块,2-转储文件生成模块,3-转储文件上传模块,4-符号文件生成模块,5-转储文件分析模块。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明实施例提供一种程序崩溃分析方法,在应用程序中集成breakpad工具,breakpad工具即Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块。

在应用程序中集成breakpad工具,在应用程序发生崩溃时,使用breakpad工具抓取应用程序崩溃信息,生成转储dump文件并写入指定的目录下,再将dump文件上传至服务器。即可将所有出错的代码收集并上传至服务器分析。breakpad工具用于抓取应用程序的崩溃。Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开,比如使用WinDbg打开。

在应用程序中集成breakpad工具时,预定义dump文件存放的目录。breakpad工具包括库文件libbreakpad_client.a,breakpad工具抓取应用程序崩溃信息生成转储dump文件并写入指定的目录下。

将dump文件上传至服务器后,获取应用程序用到的所有共享库so文件的符号文件;分析dump文件,得到产生崩溃的原因,出错的代码,调用的函数;通过出错的代码和调用的函数查找符号文件获得出错的代码对应的原始代码行号和原始代码文件,比较方便的就能找到产生崩溃的原因了,极大的节省了人力成本,也能够及时的分析dump文件及早的发现问题。本发明可应用于安卓系统。

具体步骤参见图1所示:

S1,在应用程序中集成breakpad工具;

由于breakpad是开源的并且提供了库文件libbreakpad_client.a,所以在应用程序中集成libbreakpad_client.a就可以集成进dump文件抓取功能,并且在应用程序入口处添加如下代码:

MinidumpDescriptor des("/sdcard");

ExceptionHandler eh(des,NULL,NULL,NULL,true,-1);

其中des对象是描述生成的dump文件存放的地址,本实施例中的是存放在sdcard中

其中eh对象是用来注册一个异常的接管,用于在程序发生崩溃的时候,可以去接管异常,生成dump文件。

其中第一个参数NULL指不注册过滤回调函数。

其中第二个参数NULL指不注册创建dump时的回调函数。

其中第三个参数NULL指dump回调函数的环境变量,由于不需要所以为NULL。

其中第四个参数true标示是注册异常接管对象。

其中第五个参数-1标示指抓取本应用的崩溃。

S2,在应用程序发生崩溃时,使用breakpad工具抓取应用程序崩溃信息,生成转储(dump)文件并写入指定的目录下;

发生崩溃时,breakpad会在指定的目录下写入dump文件,本实施例中是对应上面的des所填的sdcard目录下。

S3,将dump文件上传至服务器;

可以使用网络套接字将dump文件上传到服务器。

S4,获取应用程序用到的所有so文件的符号文件;

使用breakpad提供的dump_syms工具获取so的符号文件。

运行dump_syms libxxx.so>libxxx.so.sym

其中libxxx.so指应用中用到的so文件,libxxx.so.sym指生成的符号文件的名字,这样对所有的so文件执行上面的命令就可以得到所有so文件的符号文件。

S5,分析dump文件,得到产生崩溃的原因,出错的代码,调用的函数;通过出错的代码和调用的函数查找符号文件获得出错的代码对应的的原始代码行号和原始代码文件。使用breakpad提供的minidump_stackwalk工具分析dump。

minidump_stackwalk xxx.dmp symbolspath>xxx.dmp.txt;

其中xxx.dmp是指dump文件名;

其中symbolspath是指符号文件所在的路径;

其中xxx.dmp.txt是指dump分析后的结果文件;即dump分析后的结果文件为txt文件,可读性更强;解决了dump文件作为google的breakpad工具自定义的一种格式文件,只能通过google提供的工具才能解析dump文件的内容,可读性不强的缺陷。

可以使用上面的命令对所有的dump文件进行分析,得到分析后的结果文件就可以定位到崩溃代码所对应的原始代码行号,比较方便的定位到bug的原因。

参见图2所示,本发明还公开了一种程序崩溃分析系统,包括:

breakpad集成模块1,用于在应用程序中集成breakpad工具:breakpad工具包括库文件libbreakpad_client.a。breakpad工具抓取应用程序崩溃信息生成转储dump文件并写入指定的目录下。

转储文件生成模块2,用于在应用程序发生崩溃时,找到出错的代码,生成dump文件并写入指定的目录下;

转储文件上传模块3,用于将dump文件上传至服务器。

程序崩溃分析系统还包括:

符号文件生成模块4,用于获取应用程序用到的所有so文件的符号文件;符号文件包括函数名,原始代码行号和原始代码文件名。

转储文件分析模块5,用于分析dump文件,得到产生崩溃的原因和得到函数调用链,通过符号文件获得出错的代码对应的的原始代码行号和原始代码文件。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1