当前位置:首页 > 芯闻号 > 充电吧
[导读]一、简述 Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,支持Linux、mac、solaris、windows。 通俗一点来讲,我们可以借助Google breakpa

一、简述

Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,支持Linux、mac、solaris、windows。

通俗一点来讲,我们可以借助Google breakpad来捕捉程序程序崩溃的错误报告。即在程序崩溃时会生成dump文件。而dump文件是进程的内存镜像,能够保存程序中断时的进程状态,让我们在程序崩溃后能够了解具体原因。

关于如何使用Google breakpad 网上完整的资料并不是很多,这两天我在网上查询了一些资料,在这里对如何使用Google breakpad 进行一个完整的总结。

二、如何使用Google Breakpad (一)、获取 Google Breakpad 源码 a、使用SVNcheckout代码

svn checkout http://google-breakpad.googlecode.com/svn/trunk/ google-breakpad-read-only

这个方法需要翻墙,暂且没有试过,有兴趣的小伙伴可以试试。

b、在CSDN资源中进行下载

我用的就是在CSDN上下载的源码,都需要积分,这里如果有兴趣的小伙伴可以从这里下载,不需要下载积分。

Google Breakpad源码下载

(二)、安装Python

这里为什么要安装Python,下面会讲述到。

关于下载什么版本,我是在官网下载了2.7.13版本,不要下载 3.x 版本以及更高版本,最好使用2.x版本。网上很多资料也强调不要使用3.x版本。这里我做了测试,安装了官网最新3.6.0版本,发现在用gyp工具将.gyp工程转换VS工程时会出现以下错误。 

注意安装完Python后,要将安装目录添加到系统环境变量的Path中。

(三)、安装gyp工具

GYP(Generate Your Projects)是由 Chromium 团队开发的跨平台自动化项目构建工具,Chromium 便是通过 GYP 进行项目构建管理。

而GYP在 源码的 google_breakpadsrctools gyp 目录下。 
打开cmd命令提示窗口,进入到 google_breakpadsrctools gyp 目录,输入命令 setup.py install ,完成gyp的安装。 
如果未安装Python,会出现以下错误。 

正确安装: 

(四)、将gyp工程转换成VS工程文件

因为用gyp打包breakpad时需要python支持,所以需要本地安装Python。由于breakpad使用python来生成Windows下的工程文件。

在执行完上一步后,不要关闭cmd窗口,继续在该目录下执行命令。

gyp.bat –no-circular-check “….clientwindowsbreakpad_client.gyp”

执行完之后,我们看到google_breakpadsrcclientwindows 目录下多了这几个文件,说明成功生成VS工程文件。

(五)、运行自带测试程序

用VS打开 breakpad_client.sln 文件。

打开之后,我们对整个工程生成解决方案。在google_breakpadsrcclientwindowsDebug 目录下生成crash_generation_app.exe,这个程序就是该解决方案生成的。


双击运行。

选择Server菜单下的start选项,开启服务端。 

再次点击该exe,再次启动一个程序为客户端。 

客户端点击 Deref Zero选项 。 

我们先看一下这个选项的操作代码,这段代码中,我们给定义了一个int型指针并赋值为0(NULL),然后给该指针指向控件赋值1,显然这是不可行的,会引起程序崩溃,而这正是我们想要的效果。

void DerefZeroCrash() {
  int* x = 0;
  *x = 1;
}
1234

点击 Deref Zero选项 之后,我们发现客户端程序闪退。而服务端显示如下:

那我们是否捕获到dump文件了呢?

我们可以看下面这段代码,ExceptionHandler即为捕捉异常的对象。而”C:dumps”即为dump文件生成的目录,生成dump文件的前提是该目录存在。



我们刚刚未在C盘新建dumps目录所以并没有生成dump文件。现在新建dumps目录,然后让客户端程序闪退,之后我们看到生成了dump文件。

第二次让客户端崩溃闪退,服务端显示信息。

下面我们用VS打开 dump文件,开始定位程序在何处崩溃了。

点击使用 仅限本机 进行调试

这里我们很清楚地看到程序具体是在哪一行代码崩溃的。同时可以看到堆栈信息。


这一篇中我们讲解了如何如何获取Google Breakpad源码、环境的配置,以及自带demo的测试过程,下一篇中将详细讲解如何将Google Breakpad 添加到我们自己的工程中来。


Qt之使用Google Breakpad捕获程序崩溃报告(生成dmp文件)

代码实例下载

原文链接:http://blog.csdn.net/goforwardtostep/article/details/56304285

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭