zoukankan      html  css  js  c++  java
  • QT中使用google breakpad捕获程序崩溃异常

    今天给大家介绍一个在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,即可成功

    二、如何使用

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

  • 相关阅读:
    一个简易的四则运算单元...(15.12.15 BUG更新)
    转一个PDevMode格式属性说明...
    正则表达式语法
    模拟键盘发送文字
    一个修改过简化版的InputQuery
    获取进程列表的单元
    获取EMF文件内全部文字, 并按照左上到右下的顺序排序
    非主窗体在任务栏显示按钮
    禁用窗体关闭按钮
    一个支持FMX.Win框架的托盘控件
  • 原文地址:https://www.cnblogs.com/xupeidong/p/9629357.html
Copyright © 2011-2022 走看看