学会这个绝招,让 C 崩溃无处可逃!
时间:2021-08-19 16:30:43
手机看文章
扫描二维码
随时随地手机看文章
[导读]Breakpad是Google用C编写的一个开源、跨平台的崩溃报告系统,它支持Windows、Linux和macOS,并提供了一个上传器,可以在进程崩溃时向一个配置好的URL提交minidump文件。目前,有很多大型项目都在使用Breakpad,例如:GoogleChrome、F...
Breakpad 是 Google 用 C 编写的一个开源、跨平台的崩溃报告系统,它支持 Windows、Linux 和 macOS,并提供了一个上传器,可以在进程崩溃时向一个配置好的 URL 提交 minidump 文件。
目前,有很多大型项目都在使用 Breakpad,例如:Google Chrome、Firefox、Google Picasa、Camino、Google Earth 等。
1工作原理
BreakPad 工作原理:
其中,包含了三个主要组件:
2编译安装
目前,有很多大型项目都在使用 Breakpad,例如:Google Chrome、Firefox、Google Picasa、Camino、Google Earth 等。
- 主页:https://chromium.googlesource.com/breakpad/breakpad/
- 文档:https://chromium.googlesource.com/breakpad/breakpad/ /HEAD/docs
- GitHub 地址:https://github.com/google/breakpad
1工作原理
BreakPad 工作原理:
其中,包含了三个主要组件:
- Breakpad client:是一个库(即:libbreakpad_client.a),将来要集成到我们的程序中。用于写 minidump 文件,捕获当前线程的状态,以及可执行文件/共享库的标识。
- Breakpad 符号转储工具:是一个程序(即:dump_syms),用于读取由编译器产生的调试信息,并以 Breakpad 自己的格式生成一个符号文件。
- Breakpad minidump 处理器:是一个程序(即:minidump_stackwalk),用于读取 minidump 文件和符号文件,并生成一个可读的 C/C 堆栈跟踪。
2编译安装
- 下载 Breakpad 源码;
- 由于 Breakpad 依赖于 LSS,所以还需要下载它(地址:https://github.com/adelshokhy112/linux-syscall-support);
- 将 LSS 中的
linux_syscall_support.h
文件放至breakpad/src/third_party/lss/
目录下。 - 编译 Breakpad,步骤非常简单:
$ cd breakpad
$ ./configure