今天给大家介绍一个在linux下如何捕获程序崩溃异常的方法

一、google breakpad源码的下载和编译

1、https://github.com/google/breakpad.git,源码地址,git clone XXX克隆即可

2、cd breakpad

3、./configure

4、make

5、make完这里会报错breakpad/src/third_party/lss/linux_syscall_support.h没有这个文件,编译时会出现这个错误

6、该文件可在https://chromium.googlesource.com/linux-syscall-support/下载,并放到breakpad/src/third_party/lss/中,若实在无法翻墙下载的同学,可以在以下链接下载linux_syscall_support.h:
http://download.csdn.net/detail/bingzhongdehuoyan/9716614

7、再次执行3和4,即可成功

二、如何使用

 #include "client/linux/handler/exception_handler.h"

 // 写完minidump后的回调函数
static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
{
printf("Dump path: %s\n", descriptor.path()); return succeeded;
}
// 触发crash来测试
void crash()
{
volatile int* a = (int*)(NULL); *a = ;
} int main(int argc, char* argv[])
{
// 初始化
ExceptionHandler google_breakpad::MinidumpDescriptor descriptor("/tmp");
// minidump文件写入到的目录
google_breakpad::ExceptionHandler eh(descriptor, NULL, dumpCallback, NULL, true, -); crash();
return ;
}

1、这样就会在/tmp下生成.dmp文件

2、为了生成可读的stack trace, breakpad需要你将binaries里的调试符号(debugging symbols)转换成基于文本格式的symbol files。

3、接着运行 dump_syms 命令来生成 symbol files,如下:$ google-breakpad/src/tools/linux/dump_syms/dump_syms ./test > test.sym

4、breakpad包含一个叫做 minidump_stackwalk 的工具来将 minidump 文件,外加symbol files来生成一个人可读的stack trace

5、$ google-breakpad/src/processor/minidump_stackwalk minidump.dmp test.sym > test.txt

6、test.txt就是最终生成的可读的异常文件用于分析

QT中使用google breakpad捕获程序崩溃异常的更多相关文章

  1. Qt 使用 Google Breakpad 捕获程序崩溃报告(dump文件) good

    http://blog.csdn.net/GoForwardToStep/article/details/56685810

  2. iOS 中捕获程序崩溃日志

    iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59) 转载▼     iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下 ...

  3. x86 Android游戏开发专题篇之使用google breakpad捕捉c++崩溃(以cocos2dx为例)

    近期一直都在x86设备上进行游戏开发.就c++层和Android java层倒没有什么要特别注意的(除了须要注意一下改动Application.mk指定平台外),在c++崩溃的时候,非常多时候看不到堆 ...

  4. Android程序崩溃异常收集框架

    最近在写Android程序崩溃异常处理,完成之后,稍加封装与大家分享. 我的思路是这样的,在程序崩溃之后,将异常信息保存到一个日志文件中,然后对该文件进行处理,比如发送到邮箱,或发送到服务器. 所以, ...

  5. Win32环境下的程序崩溃异常定位

    1       案例描述 作为Windows程序员,平时最担心见到的事情可能就是程序发生了崩溃(异常),这时Windows会提示该程序执行了非法操作,即将关闭.请与您的供应商联系.呵呵,这句微软的“名 ...

  6. iOS 中捕获程序崩溃日志 (2014-04-22 17:35:59)

    http://blog.sina.com.cn/s/blog_b71d24920101ky2d.html iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软 ...

  7. iOS开发-捕获程序崩溃日志

    iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法.下面就介绍如何在iOS中实现: 1. 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时 ...

  8. Android使用google breakpad捕获分析native cash

    Android 开发高手课 课后练习(1) 一.Chapter01 崩溃 https://time.geekbang.org/column/article/70602 https://github.c ...

  9. iOS 捕获程序崩溃日志

    iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者? 下面就介绍如何在iOS中实现: 1. 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作 NSSetU ...

随机推荐

  1. 学习 JavaScript (五)核心概念:语句

    语句 语句被称作是流控制语句,通常有标志性的一个或者多个关键字,if . do-while. while.for. for-in. label. break.continue.with.switch. ...

  2. 软件开发架构介绍||OSI七层协议之物理层、数据链路层、网络层、传输层(mac地址、ip协议、断开协议、tcp协议之三次握手四次挥手)

    一.网络编程 软件开发架构 C/S架构 C:客户端 想体验服务的时候才会去找服务端体验服务 S:服务端   24小时不间断的提供服务,即时监听,随时待命 B/S架构 B:浏览器    想体验服务的时候 ...

  3. Web前端-Vue.js必备框架(五)

    Web前端-Vue.js必备框架(五) 页面组件,商品列表组件,详情组件,购物车清单组件,结算页组件,订单详情组件,订单列表组件. vue-router 路由 vuex 组件集中管理 webpack ...

  4. Android屏幕适配讲解与实战

    文章大纲 一.屏幕适配是什么二. 重要概念讲解三.屏幕适配实战四.项目源码下载   一.屏幕适配是什么   Android中屏幕适配就是通过对尺寸单位.图片.文字.布局这四种类型的资源进行合理的设计和 ...

  5. 关于Redis和Memcache的比较

    关于Redis和Memcache在应用中,都可以实现缓存的功能,但是,具体使用情况需要根据具体业务场景,尤其是对缓存数据有特性要求时,需要选择对应的缓存机制. 共同点: 都是基于内存的数据库,可用作缓 ...

  6. hadoop 笔记(hive)

    //**********************************//安装配置1. 修改配置文件 1.1 在conf文件夹下 touch hive-site.xml <configurat ...

  7. 识别率很高的java文字识别技术

    java文字识别程序的关键是寻找一个可以调用的OCR引擎.tesseract-ocr就是一个这样的OCR引擎,在1985年到1995年由HP实验室开发,现在在Google.tesseract-ocr ...

  8. 搭建属于自己的GIT服务器——pingg

    1.下载并安装jdk. 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...

  9. 博客系统typecho的安装与使用

    之前用过wordpress和emlog的博客系统,感觉上wordpress功能强大,插件多,而且也不局限博客网站,就是资源占用比较高,emlog比较简单,资源占用少,就是界面不太喜欢,功能相对也少了些 ...

  10. 来一波C#发送邮件

    1.所用工具和资源:VS2012   在.NET Frameword类库中提供SmtpClient类(System.NET.Mail) 2.运行截图 3.具体代码实现如下: using System; ...