Qt中使用Google Breakpad捕获程序崩溃异常
2018-09-12 00:00
1676 查看
今天给大家介绍一个在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就是最终生成的可读的异常文件用于分析
一、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就是最终生成的可读的异常文件用于分析
相关文章推荐
- Qt 使用 Google Breakpad 捕获程序崩溃报告(dump文件) good
- Qt 使用 Google Breakpad 捕获程序崩溃报告(dump文件)
- Qt之使用Google Breakpad捕获程序崩溃报告(dump文件)
- Google Breakpad在windows下捕获程序崩溃报告
- Google Breakpad 捕获程序崩溃报告代码简解
- Google Breakpad 在 windows下捕获程序崩溃报告
- Google Breakpad 在 windows下捕获程序崩溃报告
- Google Breakpad 捕获程序崩溃报告代码简解
- wpf 程序异常捕获,而不崩溃退出
- window平台下VS2013结合Qt的google breakpad异常捕捉
- Qt5 中使用了QQuickWidget,程序退出时容易崩溃的解决办法。
- 关于qt下使用google breakpad的相关问题
- 捕获崩溃异常并重启程序,上传崩溃日志到服务器
- 抓捕程序在使用中崩溃的异常并存储在文件中
- window平台下VS2013结合Qt的google breakpad异常捕捉
- 如何使用MAP文件找到程序崩溃时源码是哪行异常
- ios 程序崩溃时捕获到异常信息
- [转]window下使用SetUnhandledExceptionFilter捕获让程序的崩溃
- Android全局异常处理(捕获异常,不弹出程序崩溃)
- 捕获程序崩溃异常上传到服务器