一种程序崩溃信息上报的方法及系统的制作方法

文档序号:6560195阅读:139来源:国知局
专利名称:一种程序崩溃信息上报的方法及系统的制作方法
技术领域
本发明涉及计算机领域,尤其涉及一种程序崩溃信息上报的方法及系统。
技术背景当一个应用程序执行了非法的计算机指令操作后,程序若出现银溃,将给 应用系统造成巨大的损失。如果知道程序中的哪一行导致了系统崩溃,这样就 能有针对性的进行改正。在vc环境下可以利用出现程序崩溃时vc的自动跳转,定位到出错代码 行。但在大量的4昔误出现时,vc本身的出错跳转往往会失灵。另外有一种辅 助查找程序崩溃代码行的方法,它利用编译时生成MAP文件中的信息来定位 代码行。但是,这样的处理局限于特定的程序语言环境中,并且只能实现程序 错误行的查找。当程序崩溃后,如果崩溃时的错误信息不上报到服务器进行收集,就4, 对程序错-误进行统计和分析,不便于程序的优化。发明内容有鉴于此,本发明提供一种程序崩溃信息上报的方法及系统,用以解决现 有技术中存在的由于程序崩溃信息不上报而导致的难以对程序错误进行统计 和分析,以及不便于程序优化的问题。本发明提供以下技术方案一种程序崩溃信息上报的方法,包括步骤 200610103916.5说明书第2/9页服务器对所述应用程序崩溃时的出错地址和错误信息内容进行分析,并根 据所述出错地址对镅-〖吴信息内容进行统计归类和存储。根振上述方法所述侦测程序位于客户端侧,内嵌于应用程序中。所述上净艮程序位于客户端侧,并与各应用程序相互独立设置。所述侦测程序将应用程序崩溃时的出错地址和错误信息内容保存为文件,并以该文件路径为参数提供给上报程序处理。所述上^^f呈序从所述侦测程序提供的参数中提取保存出错地址和错误信息内容的文件路径,根据该文件路径从文件中读取出错地址和错误信息内容,并上报至服务器。一种程序崩溃信息处理系统,包括崩溃信息捕获单元,位于客户端侧,用于捕获应用程序崩溃时的出错地址 和错误信息内容;崩溃信息上报单元,位于客户端侧,用于接收所述崩溃信息捕获单元提供 的出错地址和4t^信息内容,并将其上报至崩溃信息收集单元;崩溃信息收集单元,位于服务器侧,用于接收并分析崩溃信息上报单元上 报的出错地址和^"i吴信息内容,以及根据所述出错地址对错误信息内容进行统 计归类和存储。所述崩溃信息捕获单元包括设置模块,用于调用操作系统提供的设置崩溃处理函数的应用程序接口 , 设置崩溃处理函数;捕获模块,用于执行所述崩溃处理函数的功能以捕获应用程序崩溃时的出 错地址和错误信息内容,并将其保存为文件,以该文件路径为参数提供给崩溃 信息上报单元处理。所述崩溃信息上净艮单元包括接收模块,用于接收从捕获模块传入的参数; 控制模块,用于从所述接收单元接收到的参数中提取保存出错地址和4t^ 信息内容的文件路径,根据该文件路径从文件中读取出错地址和错误信息内容;上报模块,用于将所述控制单元提供的出错地址和4綠信息内容上才艮至崩 溃信息收集单元。所述崩溃信息收集单元包括接收模块,用于接收崩溃信息上报单元上报的应用程序崩溃时的出错地址 和错误信息内容;控制模块,用于分析所述接收单元接收到的出错地址和错误信息内容,并根据所述出错地址对错误信息内容进行统计归类;存储模块,用于存储经所述控制单元统计归类的应用程序崩溃时的出错地 址和错误信息内容。本发明有益效果如下本发明实现了当应用程序崩溃时,捕获出错地址和m信息内容并将其上 报至服务器,由服务器对其进行分析、归类以及存储,有利于后续根据崩溃出 错数量来选出崩溃出现次数较多的错误对程序进行优化处理。


图1为本发明实施例中程序崩t信息处理系统的结构示意图; 图2为本发明实施例中侦测程序的模块示意图; 图3为本发明实施例中上报程序的模块示意图; 图4为本发明实施例中服务器程序的模块示 意图; 图5为本发明实施例中程序崩溃时的处理流程图。
具体实施例方式
序错误进行统计和分析,以及不便于程序优化的问题,本发明对程序崩溃信息 进行上报和归类存储。参阅图l所示为本实施例中程序崩溃信息上报系统的结构示意图,包括崩溃信息捕获单元100、崩溃信息上报单元101、崩溃信息收集单元102;所述崩 溃信息捕获单元IOO,位于客户端侧,用于捕获应用程序崩溃时的出错地址和 错误信息内容;所述崩溃信息上报单元101,位于客户端侧,用于接收所述崩 溃信息捕获单元100提供的出错地址和错误信息内容,并将其上报至崩溃信息 收集单元102;所述崩溃信息收集单元102,位于服务器侧,用于接收并分析 崩溃信息上报单元101上报的出错地址和错误信息内容,以及根据所述出错地 址对错误信息内容进行统计归类和存储。所述崩溃信息捕获单元100的处理由一个侦测程序完成,参阅图2所示为 该程序的模块示意图,包括设置模块200、捕获模块201;所述设置模块200, 用于调用操作系统提供的设置崩溃处理函数的应用程序接口 (API),设置崩溃 处理函数;所述捕获模块201,其处理由所述崩溃处理函数完成,用于捕获应 用程序崩溃时的出错地址和错误信息内容,并将其保存为文件,以该文件路径 为参数提供给崩溃信息上报单元101处理。所述设置模块200调用操作系统提供的API设置崩溃处理函数;当应用程 序开始执行,所述设置模块200利用所述API判断该应用程序是否崩溃,确定 应用程序崩溃时,自动进行所述捕获模块201的处理,在处理完毕后应用程序 退出。所述设置模块200位于应用程序执行后的第一个函数内,以便于捕获所有 应用程序启动后出现的崩溃。所述捕获模块201通过操作系统提供的API捕获错误信息,错误信息包括 程序出错地址,程序出错时的函数调用堆栈。下面给出程序出错信息的例子来 具体说明
Address: 0x60B23922 Call stack:6224)0x00400000[7CBF]Music.exe:(l,204,4848064,10090108,1244120) 0x00400,lA62]Musicexe:(腳画,4335430,10090096,10090096) 0x00400000[22783]Music.exe:(10090108,10031328,0,4212766) 0x00400000[189D9〗Music.exe:(13024,0,4696248,1244448) 0x60B20000[lCEA] MFC42.DLL: Qrdinal6374[+22](13024,0,0,1244724)0x77D10000[8816]USER32.dll:GetDC[+14F](0,1622285185,263742,13024)0x60B20000[llCE]MFC42.DLL:Ordinal5307[+3A](4847712,4847712,1245120,-l)0x60B20000[B4FE]MFC42.DLL:Ordinall576[+52](4194304,0,1319867,10)0x00400000[6D7FD]Music.exe: (4194304,0,1319867,10)0x00400000[65DDA]Music.exe:(632176,12513504,2147299328,陽214193函)0x7C800000[16D4F]kemeB2.dll:RegisterWaitForInputIdle[+49](2088856920,0,0,0)0x7C800000[399F3] k置132.dll: FindAtomW[+94](0,0,0,0)以上例子中,Address: 0x60B23922代表该程序崩溃时执行的指令的地址为0x60B23922,从该地址可以追查到程序出错的函数,以便于从代码中查找错误。 函数调用堆栈Call Stack中的每一行是程序出错时的函数调用,最上一条的是程序崩溃时调用的函数,第二条函数调用第一条函数,第三条函数调用第二条函数,以此类推。 例如0x00400000[7CBF] Music.exe: (10090204,4848064,10090108,1244120)
0x00400000代表4莫块Music.exe的虚拟内存地址,7CBF是相对于才莫块地 址的相对地址。从0x00400000[7CBF]就可以查询到对应的函数。Music.exe是 模块名。从这条信息中,就可以查到对应的函数是在Music.exe中的7CBF中。所述捕获模块201在捕获了出错地址和错误信息内容后,将其保存为文件。所述崩溃信息上才艮单元101的处理由一个上报程序完成。所述捕获模块 201以保存出错地址和错误信息内容的文件路径作为参数调用上报程序,所述 上报程序读取该文件进行上4艮。参阅图3所示为所述上报程序的模块示意图,包括接收模块300、控制 模块301、上报模块302;所述接收模块300,用于接收从捕获模块201传入的 参数;所述控制模块301,用于从所述接收模块300接收到的参数中提取保存 出错地址和错误信息内容的文件路径,根据该文件路径从文件中读取出错地址 和错误信息内容;所述上报模块302,用于将所述控制模块301提供的出错地 址和镅-溪信息内容上才艮至崩溃信息收集单元102。所述上报程序可以与侦测程序一起嵌入到应用程序中,但为了不影响程序 崩溃时结束运行,较佳的方式是所述上报程序设置为独立的程序(即不内嵌在 应用程序中)。所述上报程序从传入的参数中提取保存出错地址和错误信息内容的文件 路径,根据文件路径从该文件中读取崩溃信息,并上报至所述崩溃信息收集单 元102。例如,在超文本传输协议(http)的统一资源定位符(URL)中带上程序 崩溃地址,在上报的内容中带上崩溃信息,如http://bugreport..com/bugreport.cgi addr=60B23922所述崩溃信息收集单元102的处理由一个服务器程序完成,参阅图4所示 为所述服务器程序的模块示意图,包括接收模块400、控制模块401、存储模 块402;所述接收模块400,用于接收崩溃信息上报单元101上报的应用程序 崩溃时的出错地址和错误信息内容;所述控制模块401,用于分析所述接收模块400接收到的出错地址和错误信息内容,并根据所述出错地址对错误信息内 容进行统计归类;所述存储^f莫块402,用于存储经所述控制单元统计归类的应 用程序崩溃时的出错地址和错误信息内容。所述控制模块401对应用程序崩溃时的出错地址和错误信息内容进行统计 归类时,根据所述出错地址对错误信息内容进行归类,使用下表崩溃地址上报数量出错信息0x60B23922341Call stack: 0x60B20000[3922]MFC42.DLL: Ordinal 1584[+A]( 16777184, 16649928,36614 00,16776224)0x30B237331Call stack: 0x00400000[ 11 A62]Music.exe:(10090096,43 3 5430, 10090096, 10090096)0x20C213451345Call stack: 0x7C800000[399F3]kemel32.dll:FindAtomW [+94](0,0,0,0)Ox50F65321765Call Stack: 0x7C812000[399F3]kemeB2.dll:GetThread[+ 94](0,0,0,0)所述控制模块401在收到一个崩溃上报时,首先确定是否已经存在该崩溃 地址对应的信息,如果有,则在该崩溃信息的上报数量中加1,如果没有,则 将该崩溃信息添加到上述表格,上报数量为1。最后由所述存储模块402将以 上表统计归类的应用程序崩溃时的出错地址和错误信息内容存储。参阅图5,以图1所示的系统结构为例,程序崩溃时的处理流程如下步骤501、开始执行应用程序。步骤502 、所述设置模块200调用操作系统提供的应用程序接口设置崩溃 处理函数。
步骤503、所述设置模块200利用操作系统提供的应用程序接口判断该应 用程序是否崩溃,若是,继续步骤504;若不是,则返回步骤501,继续执行 应用程序。步骤504、所述设置模块200在确定应用程序崩溃时,通过操作系统提供 的应用程序接口捕获出错地址和错误信息内容,并将其保存为文件。步骤505、所述捕获才莫块201在将捕获到的出错地址和4 信息内容保存 为文件后,设置调用所述上报程序的参数为该文件路径。步骤506、所述捕获模块201以保存出错地址和错误信息内容的文件路径 为参数调用所述上报程序。步骤507、所述捕获模块201的处理完毕后应用程序退出。步骤508、所述上报程序从传入的参数中提取保存出错地址和错误信息内 容的文件路径。步骤509、所述上报程序根据保存出错地址和错误信息内容的文件路径从 该文件中读取出错地址和错误信息内容,并进行上报。步骤510、所述崩溃信息收集单元102中的接收模块400接收崩溃信息上 报单元101上报的出错地址和错误信息内容。步骤511、所述崩溃信息收集单元102中的控制模块401对所述接收模块 400接收到的应用程序崩溃时的出错地址和错误信息内容进行分析,并根据所 述出错地址对错误信息内容进行统计归类,控制模块401在收到一个崩溃上报 时,首先确定是否已经存在该崩溃地址对应的信息,如果有,则在该崩溃信息 的上报数量中加1,如果没有,则添加将该崩溃信息,上报数量为1。所述崩 溃信息收集单元102中的存储;^莫块402将统计归类后的应用程序崩溃时的出错 地址和错误信息内容存储。从上述实施例可知,本发明实现了当应用程序崩溃时,捕获出错地址和错 误信息内容并将其上报至服务器,由服务器对其进行分析、归类以及存储,有
利于后续根据崩溃出错数量来选出崩溃出现次数较多的错误对程序进行优化 处理。显然,本领域的技术人员可以对本发明进行备种改动和变型而不脱离本发 明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求 及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种程序崩溃信息上报的方法,其特征在于,包括步骤侦测程序捕获应用程序崩溃时的出错地址和错误信息内容并通过上报程序将其上报至服务器;以及服务器对所述应用程序崩溃时的出错地址和错误信息内容进行分析,并根据所述出错地址对错误信息内容进行统计归类和存储。
2、 如权利要求l所述的方法,其特征在于,所述侦测程序位于客户端侧, 内嵌于应用程序中。
3、 如权利要求l所述的方法,其特征在于,所述上报程序位于客户端侧, 并与各应用程序相互独立设置。
4、 如权利要求l、 2或3所述的方法,其特征在于,所述侦测程序将应用 程序崩溃时的出错地址和错误信息内容保存为文件,并以该文件路径为参数提 供给上报程序处理。
5、 如权利要求3所述的方法,其特征在于,所述上报程序从所述侦测程 序提供的参数中提取保存出错地址和错误信息内容的文件路径,根据该文件路 径从文件中读取出错地址和错误信息内容,并上报至服务器。
6、 一种程序崩溃信息处理系统,其特征在于,包括 崩溃信息捕获单元,位于客户端侧,用于捕获应用程序崩溃时的出错地址和错误信息内容;崩溃信息上报单元,位于客户端侧,用于接收所述崩溃信息捕获单元提供 的出错地址和错误信息内容,并将其上报至崩溃信息收集单元;崩溃信息收集单元,位于服务器侧,用于接收并分析崩溃信息上报单元上 报的出错地址和错误信息内容,以及根据所述出错地址对错误信息内容进行统 计归类和存储。
7、 如权利要求6所述的系统,其特征在于,所述崩溃信息捕获单元包括 设置模块,用于调用操作系统提供的设置崩溃处理函数的应用程序接口 , 设置崩溃处理函数;捕获模块,用于执行所述崩溃处理函数的功能以捕获应用程序崩溃时的出 错地址和错误信息内容,并将其保存为文件,以该文件路径为参数提供给崩溃 信息上报单元处理。
8、 如权利要求6或7所述的系统,其特征在于,所述崩溃信息上报单元 包括接收模块,用于接收从捕获模块传入的参数;控制模块,用于从所述接收单元接收到的参数中提取保存出错地址和错误 信息内容的文件路径,根据该文件路径从文件中读取出错地址和错误信息内 容;上报模块,用于将所述控制单元提供的出错地址和错误信息内容上报至崩 溃信息收集单元。
9、 如权利要求8所述的系统,其特征在于,所述崩溃信息收集单元包括 接收模块,用于接收崩溃信息上报单元上报的应用程序崩溃时的出错地址和错误信息内容;控制模块,用于分析所述接收单元接收到的出错地址和错误信息内容,并 根据所述出错地址对错误信息内容进行统计归类;存储模块,用于存储经所述控制单元统计归类的应用程序崩溃时的出错地 址和错误信息内容。
全文摘要
本发明公开了一种程序崩溃信息上报的方法,用以解决现有技术中存在的由于程序崩溃信息不上报而导致的难以对程序错误进行统计和分析,以及不便于程序优化的问题;该方法利用侦测程序捕获应用程序崩溃时的出错地址和错误信息内容并通过上报程序将其上报至服务器;以及服务器对所述应用程序崩溃时的出错地址和错误信息内容进行分析,并根据所述出错地址对错误信息内容进行统计归类和存储。本发明还同时公开一种程序崩溃信息处理系统。
文档编号G06F11/36GK101114253SQ20061010391
公开日2008年1月30日 申请日期2006年7月26日 优先权日2006年7月26日
发明者冼业成, 刘化静, 李训耕, 谦 杨, 林友尧, 王清明, 陈启祥 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1