CN106649089B - 一种程序崩溃分析方法及系统 - Google Patents

一种程序崩溃分析方法及系统 Download PDF

Info

Publication number
CN106649089B
CN106649089B CN201610881073.5A CN201610881073A CN106649089B CN 106649089 B CN106649089 B CN 106649089B CN 201610881073 A CN201610881073 A CN 201610881073A CN 106649089 B CN106649089 B CN 106649089B
Authority
CN
China
Prior art keywords
file
dump
breakpad
dump file
program
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
CN201610881073.5A
Other languages
English (en)
Other versions
CN106649089A (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.)
Guangzhou Wenjie Intelligent Technology Co.,Ltd.
Original Assignee
Wuhan Douyu Network 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 Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201610881073.5A priority Critical patent/CN106649089B/zh
Publication of CN106649089A publication Critical patent/CN106649089A/zh
Application granted granted Critical
Publication of CN106649089B publication Critical patent/CN106649089B/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/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

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)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种程序崩溃分析方法,涉及计算机信息处理技术领域,包括在应用程序中集成breakpad工具,在应用程序发生崩溃时,使用breakpad工具抓取应用程序崩溃信息,生成转储dump文件并写入指定的目录下,再将dump文件上传至服务器。本发明可便捷的抓取应用程序的崩溃信息生成dump文件并上传至服务器进行分析。本发明还公开了一种程序崩溃分析系统。

Description

一种程序崩溃分析方法及系统
技术领域
本发明涉及计算机信息处理技术领域,具体涉及一种程序崩溃分析方法及系统。
背景技术
随着计算机应用的发展,满足用户各种计算机应用程序层出不穷。然而,应用程序运行过程中,有时会发生程序崩溃的现象,无论是指针越界还是非法操作,都将给系统造成巨大的损失。但在一个大型系统的测试过程中,初期出现程序崩溃似乎成了不可避免的事。
因此,亟需一种在应用程序发生崩溃的时候记录下产品崩溃的原因,以方便产品开发人员及时定位到程序的出错的代码,提高代码的质量及产品的稳定性的技术方案。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种程序崩溃分析方法及系统,可便捷的抓取应用程序的崩溃信息生成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文件,得到产生崩溃的原因和得到函数调用链,通过符号文件获得出错的代码对应的的原始代码行号和原始代码文件。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (8)

1.一种程序崩溃分析方法,其特征在于:在应用程序中集成breakpad工具,在应用程序发生崩溃时,使用breakpad工具抓取应用程序崩溃信息,生成转储dump文件并写入指定的目录下,再将dump文件上传至服务器;
将dump文件上传至服务器后,获取应用程序用到的所有共享库so文件的符号文件;分析dump文件,得到产生崩溃的原因,出错的代码,调用的函数;通过出错的代码和调用的函数查找符号文件获得出错的代码对应的原始代码行号和原始代码文件。
2.如权利要求1所述的一种程序崩溃分析方法,其特征在于:所述符号文件包括函数名,原始代码行号和原始代码文件名。
3.如权利要求1所述的一种程序崩溃分析方法,其特征在于:在应用程序中集成breakpad工具时,预定义dump文件存放的目录。
4.如权利要求1所述的一种程序崩溃分析方法,其特征在于:所述breakpad工具抓取应用程序崩溃信息生成转储dump文件并写入指定的目录下。
5.如权利要求1所述的一种程序崩溃分析方法,其特征在于:使用网络套接字将dump文件上传到服务器。
6.一种程序崩溃分析系统,其特征在于,包括:
breakpad集成模块,用于在应用程序中集成breakpad工具:
转储文件生成模块,用于在应用程序发生崩溃时,找到出错的代码,生成dump文件并写入指定的目录下;
转储文件上传模块,用于将dump文件上传至服务器;
符号文件生成模块,用于获取应用程序用到的所有so文件的符号文件;
转储文件分析模块,用于分析dump文件,得到产生崩溃的原因和得到函数调用链,通过符号文件获得出错的代码对应的的原始代码行号和原始代码文件。
7.如权利要求6所述的一种程序崩溃分析系统,其特征在于:breakpad集成模块还用于预定义dump文件存放的目录。
8.如权利要求6所述的一种程序崩溃分析系统,其特征在于:所述符号文件包括函数名,原始代码行号和原始代码文件名。
CN201610881073.5A 2016-10-09 2016-10-09 一种程序崩溃分析方法及系统 Active CN106649089B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610881073.5A CN106649089B (zh) 2016-10-09 2016-10-09 一种程序崩溃分析方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610881073.5A CN106649089B (zh) 2016-10-09 2016-10-09 一种程序崩溃分析方法及系统

Publications (2)

Publication Number Publication Date
CN106649089A CN106649089A (zh) 2017-05-10
CN106649089B true CN106649089B (zh) 2019-07-09

Family

ID=58854164

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610881073.5A Active CN106649089B (zh) 2016-10-09 2016-10-09 一种程序崩溃分析方法及系统

Country Status (1)

Country Link
CN (1) CN106649089B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107329896A (zh) * 2017-06-29 2017-11-07 郑州云海信息技术有限公司 一种基于be的程序崩溃的分析方法及系统
CN108170595B (zh) * 2017-12-25 2021-03-16 北京蓝海讯通科技股份有限公司 一种转储文件生成方法及数据探针的安装和卸载方法
CN108170552B (zh) * 2018-01-05 2021-06-15 武汉斗鱼网络科技有限公司 一种抓取Dump文件的方法、装置和设备
CN108255719B (zh) * 2018-01-11 2021-04-23 武汉斗鱼网络科技有限公司 一种应用程序dump文件获取方法、装置及电子设备
CN110032502B (zh) * 2018-01-11 2023-05-26 广州市康锦信息技术有限公司 一种异常处理的方法、装置及电子设备
CN110795259A (zh) * 2018-08-01 2020-02-14 北京京东尚科信息技术有限公司 一种分析应用崩溃的方法和装置
CN109901941A (zh) * 2018-12-15 2019-06-18 中国平安人寿保险股份有限公司 应用程序崩溃处理方法及装置、计算机装置及存储介质
CN110262918B (zh) * 2019-06-19 2023-07-18 深圳市网心科技有限公司 进程崩溃分析方法及装置、分布式设备及存储介质
CN111258802A (zh) * 2020-02-10 2020-06-09 同盾控股有限公司 捕获应用程序崩溃信息的方法及相关设备
CN111367799B (zh) * 2020-02-28 2024-05-07 同盾控股有限公司 定位源代码崩溃位置的方法、装置、介质及电子设备
CN113553211B (zh) * 2021-09-23 2022-01-18 统信软件技术有限公司 一种核心转储文件的生成方法、计算设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719090A (zh) * 2009-12-25 2010-06-02 珠海市君天电子科技有限公司 对计算机软件系统崩溃原因进行自动分析的方法
CN103106132A (zh) * 2013-03-05 2013-05-15 中标软件有限公司 Linux系统崩溃时内核函数调用栈分析调试方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104796B2 (en) * 2012-12-21 2015-08-11 International Business Machines Corporation Correlation of source code with system dump information

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719090A (zh) * 2009-12-25 2010-06-02 珠海市君天电子科技有限公司 对计算机软件系统崩溃原因进行自动分析的方法
CN103106132A (zh) * 2013-03-05 2013-05-15 中标软件有限公司 Linux系统崩溃时内核函数调用栈分析调试方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Google Breakpad:实战crash;Frank_Library;《360doc个人图书馆》;20141102;1-7

Also Published As

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

Similar Documents

Publication Publication Date Title
CN106649089B (zh) 一种程序崩溃分析方法及系统
US9043759B1 (en) System and method for generating software unit tests simultaneously with API documentation
US9280442B1 (en) System and method for generating coverage reports for software unit tests
AU2007348312B2 (en) System and method for knowledge extraction and abstraction
US20090319995A1 (en) Enhancing source code debugging and readability using visual symbols
AU2017327823B2 (en) Test case generator built into data-integration workflow editor
CN106919612B (zh) 一种上线结构化查询语言脚本的处理方法及装置
US10229042B2 (en) Detection of meaningful changes in content
US9075544B2 (en) Integration and user story generation and requirements management
CN103049371A (zh) Android应用程序测试方法和测试装置
JP2007323573A (ja) 機能テスト・スクリプト生成装置
US9304893B1 (en) Integrated software development and test case management system
WO2014157056A1 (ja) ソースプログラム解析システム、ソースプログラム解析方法およびプログラムを記録した記録媒体
CN104572463A (zh) 测试接口信息的方法及装置
US10534700B2 (en) Separating test verifications from test executions
CN112241370B (zh) 一种api接口类的校验方法、系统及装置
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
US20180137036A1 (en) Determining potential test actions
US20220091968A1 (en) System and method for automated generation of test cases and test data for validating a software application
US11461217B2 (en) Transferring data from a source complex variable to a target complex variable
CN110991147B (zh) 一种字体检测方法、装置、电子设备及存储介质
TWI414995B (zh) 開發及執行平台
CN103577170A (zh) 网络应用的构建方法及装置
CN106155895A (zh) 脚本数据处理方法及装置
CN109857636A (zh) 一种在安卓客户端UI自动化过程中定位App首页的方法和应用

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: 20230811

Address after: Room 1501, No. 18 Jinmao East 1st Street, Nansha District, Guangzhou City, Guangdong Province, 510000 (Location: D006)

Patentee after: Guangzhou Wenjie Intelligent Technology Co.,Ltd.

Address before: 430000 Wuhan Donghu Development Zone, Wuhan, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building

Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd.

TR01 Transfer of patent right