Google Breakpad 在 windows下捕获程序崩溃报告

本文介绍如何利用GoogleBreakpad跨平台模块捕捉程序崩溃错误报告,并生成dump文件以供后续分析。涵盖获取源码、配置环境、转换工程文件及运行测试程序等步骤。

一、简述

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、在优快云资源中进行下载

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

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_breakpad\src\tools \gyp 目录下。
打开cmd命令提示窗口,进入到 \google_breakpad\src\tools \gyp 目录,输入命令 setup.py install ,完成gyp的安装。
如果未安装Python,会出现以下错误。
这里写图片描述

正确安装:
这里写图片描述

这里写图片描述

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

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

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

gyp.bat –no-circular-check “….\client\windows\breakpad_client.gyp”

这里写图片描述

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

这里写图片描述

这里写图片描述

这里写图片描述

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

用VS打开 breakpad_client.sln 文件。

这里写图片描述

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

这里写图片描述


双击运行。

这里写图片描述

选择Server菜单下的start选项,开启服务端。
这里写图片描述

再次点击该exe,再次启动一个程序为客户端。
这里写图片描述

客户端点击 Deref Zero选项 。
这里写图片描述

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

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

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

这里写图片描述

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

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


这里写图片描述


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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

这里写图片描述


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


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

代码实例下载

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值