使用Google开源库breakpad实现错误报告功能


layout: post
title: “使用Google开源库breakpad实现错误报告功能”
subtitle: “Google大法好”
date: “2017-08-10”
author: “cj”
tags:
breakpad
c++
linux
google
bugreport

前阵子写的微信公众号后台服务器自动崩溃重启了一次,看日志没任何头绪,看来需要core dump。
但是搜索一阵子发现,这玩意真难用,要ulimit -c unlimited后才会生成dump。又搜索一番,发现Google出品的breakpad,谷歌出品,必属精品,就它了!

git clone https://chromium.googlesource.com/breakpad/breakpad
  • 有几个第三方库默认情况没有下载,按需手动下载到breakpad/src/thirdparty中
cd breakpad
git clone https://chromium.googlesource.com/linux-syscall-support src/third_party/lss
  • 编译安装
./configure
make
make check
sudo make install

安装目录默认为/usr/local/include/breakpad,库目录/usr/local/lib/libbreakpad.a, libbreakpad_client.a

  • 应用

方便起见,写了一个自动生成symbol调试信息的脚本build_symbols.sh:

#!/bin/bash
out=$1
sym="${out}.sym"
dump_syms $out > $sym
line=$(head -n1 ${
    sym})
arr=($line)
sdir="./symbols/${out}/${arr[3]}"
mkdir -p $sdir
mv $sym $sdir

用例./build_symbols.sh test

我把它写在了makefile中的make release段内。

崩溃后自动调用写好的脚本生成stack walk并发送邮件给自己的邮箱

#include <client/linux/handler/exception_handler.h>

void crash_send(const std::string& dmp_path)
{
   
    try {
   
        auto path = bfs::canonical("../tools/send_mail_.sh");
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值