热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

qt如何在linux程序中捕获异常信号,[操作系统]QT中使用googlebreakpad捕获程序崩溃异常...

[操作系统]QT中使用googlebreakpad捕获程序崩溃异常02018-09-1119:00:42今天给大家介绍一个在linux下如何捕获程序崩溃异常的方法一、googleb

[操作系统]QT中使用google breakpad捕获程序崩溃异常

0 2018-09-11 19:00:42

今天给大家介绍一个在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/中,若实在无法FQ下载的同学,可以在以下链接下载linux_syscall_support.h:

1 #include "client/linux/handler/exception_handler.h" 2 3 // 写完minidump后的回调函数 4 static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded) 5 { 6 printf("Dump path: %s\n", descriptor.path()); return succeeded; 7 } 8 // 触发crash来测试 9 void crash()10 { 11 volatile int* a = (int*)(NULL); *a = 1; 12 }13 14 int main(int argc, char* argv[]) 15 {16 // 初始化17 ExceptionHandler google_breakpad::MinidumpDescriptor descriptor("/tmp");18 // minidump文件写入到的目录 19 google_breakpad::ExceptionHandler eh(descriptor, NULL, dumpCallback, NULL, true, -1); crash(); 20 return 0;21 }

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就是最终生成的可读的异常文件用于分析 转载请保留本文网址:http://www.shaoqun.com/a/397176.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

GOOGLE

0



推荐阅读
author-avatar
皮H痞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有