文章目录
一、下载
https://github.com/google/breakpad
二、编译安装
1、Linux平台
(1)编译安装
解压到目录breakpad,然后在命令窗口cd到改目录下。执行命令:
常规编译
./configure --prefix=/opt/breakpad-ubuntu-x64
交叉编译
# 设置交叉编译工具链到环境变量
export PATH=/opt/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH
./configure \
CC=arm-linux-gnueabihf-gcc \
CXX=arm-linux-gnueabihf-g++ \
AR=arm-linux-gnueabihf-gcc-ar \
RANLIB=arm-linux-gnueabihf-gcc-ranlib \
--host=arm-linux-gnueabihf \
--prefix=/opt/breakpad-raspberrypi-armv7l
执行命令:make
。会报错:
In file included from ./src/client/linux/dump_writer_common/thread_info.h:37:0,
from ./src/client/linux/minidump_writer/linux_dumper.h:54,
from ./src/client/linux/minidump_writer/minidump_writer.h:42,
from src/tools/linux/core2md/core2md.cc:34:
./src/common/memory_allocator.h:50:51: fatal error: third_party/lss/linux_syscall_support.h: 没有那个文件或目录
compilation terminated.
Makefile:5685: recipe for target 'src/tools/linux/core2md/core2md.o' failed
make: *** [src/tools/linux/core2md/core2md.o] Error 1
解决方法: 下载linux_syscall_support.h
文件,创建目录breakpad/src/third_party/lss/
,并把文件放入其中,然后重新执行make
命令。
编译结束后,执行命令:sudo make install
,即可安装到目录/opt/breakpad-ubuntu-x64
中,如:
(2)环境配置
export BREADKPAD_ROOT=/opt/breakpad-ubuntu-x64
# 运行依赖
export LD_LIBRARY_PATH=$BREADKPAD_ROOT/lib:$LD_LIBRARY_PATH
# 开发依赖
export PATH=$BREADKPAD_ROOT/bin:$PATH
export CPATH=$BREADKPAD_ROOT/include/breakpad:$CPATH
export LIBRARY_PATH=$BREADKPAD_ROOT/lib:$LIBRARY_PATH
(3)使用
#include <iostream>
#include "client/linux/handler/exception_handler.h"
/* 写完minidump后的回调函数 */
static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
{
std::cout << "Dump path: " << descriptor.path() << std::endl;
return succeeded;
}
/* 触发crash来测试 */
void crash()
{
volatile int* a = (int*)(NULL);
*a = 1;
}
int main(int argc, char* argv[])
{
/* 初始化 */
ExceptionHandler google_breakpad::MinidumpDescriptor descriptor("/home/jaron/dump");
/* minidump文件写入到的目录 */
google_breakpad::ExceptionHandler eh(descriptor, NULL, dumpCallback,