今天给大家介绍一个在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. 【纯技术贴】.NETStandard FreeSql v0.0.9 功能预览

    年关将至,首页技术含量文章真是越来越少,理解大家盼着放假过年,哥们我何尝不是,先给大家拜个早年. 兄弟我从11月底发了神经,开启了 ORM 功能库的开发之旅,历时两个月编码和文档整理,目前预览版本更新 ...

  2. VulDeePecker:基于深度学习的脆弱性检测系统

    最近的两款软件,VUDDY和VulPecker,假阴性率高而假阳性率低,用于检测由代码克隆引发的漏洞.而如果用于非代码克隆引起的漏洞则会出现高误报率. 本文使用深度学习处理程序中的代码片段,不应由专家 ...

  3. git冲突时解决方法

    在多人协作中,使用git时有冲突是必然的,当git pull 下来代码的时候会出现  <<<<<<< HEAD这些东西,我也没有详细了解过这些,只是知道删除一 ...

  4. 【Oracle RAC】Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂)

    [Oracle RAC]Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂) 2 Oracle11gR2 RAC数据库安装准备工作2.1 安装环境介绍2.2 数据库安装软件 ...

  5. Windows Server 2016-批量设置用户下次登陆须更改密码

    Powershell设置某OU下所有用户下次登陆必须更改密码: Get-ADUser -Filter * -SearchBase "ou=syncall,dc=azureyun,dc=com ...

  6. pytest框架之命令行参数1

    前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixtur ...

  7. shell读取文件内容并进行变量赋值

    需求: shell读取文件内容,然后把内容赋值给变量然后进行字符串处理 实现: dataline=$(cat /root/data/data.txt) echo $dataline

  8. 【JavaScript动画基础】学习笔记(一)-- 旋转箭头

    随着鼠标的移动旋转箭头. requestAnimationFrame 在requestAnimationFrame之前我们可以用setInterval来实现动画的循环: function drawFr ...

  9. HTML5+CSS3入门学习(一)——HTML5

    什么是 HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. HTML 的上一个版本诞生于 1999 年.自从那以后,Web 世界已经经历了巨变. HTML5 仍 ...

  10. 解决Linux启动redis时出现提示权限不够问题

    如果权限不够请使用一条命令 chmod 777  操作 参考:https://blog.csdn.net/zczzsq/article/details/8162339