手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Qt中使用Google Breakpad捕获程序崩溃异常

[日期:2018-09-12] 来源:Linux社区  作者:Linux [字体: ]

今天给大家介绍一个在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:

可以到Linux公社资源站下载:

------------------------------------------分割线------------------------------------------

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2018年资料/9月/12日/Qt中使用Google Breakpad捕获程序崩溃异常/

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割线------------------------------------------

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 = 1;
}

int main(int argc, char* argv[])
{
 // 初始化
ExceptionHandler google_breakpad::MinidumpDescriptor descriptor("/tmp");
 // minidump文件写入到的目录
google_breakpad::ExceptionHandler eh(descriptor, NULL, dumpCallback, NULL, true, -1); crash();
return 0;
 }

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就是最终生成的可读的异常文件用于分析

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-09/154032.htm

linux
相关资讯       Google Breakpad 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款