源码下载地址:https://chromium.googlesource.com/breakpad/breakpad
依赖头文件下载地址:?https://chromium.googlesource.com/linux-syscall-support
Breakpad由三个主要组件:
client 是一个库, 以library的形式内置在应用中,在应用崩溃时写入一个minidump文件
symbol dumper 是一个程序,读取由编译器产生的调试信息(debugging information),并生成一个使用Breakpad格式的符号文件( symbol file)
processor 是一个程序,读取 minidump文件 和 symbol file,生成可读的c/c++ 堆栈跟踪(Stack trace.)
?
实现机制
在windows平台上,使用微软提供的 SetUnhandledExceptionFilter() 方法来实现。
在OS X平台上,通过创建一个线程来监听 Mach Exception port 来实现。
在Linux平台上,通过设置一个信号处理器来监听 SIGILL SIGSEGV 等异常信号。
源码编译需要GYP生成VS打开的sln文件,GYP又依赖于python2.7.x版本
依赖关系:python2.7.x -> GYP -> Visual Studio;可顺序安装
GYP(Generate Your Projects)是由 Chromium 团队开发的跨平台自动化项目构建工具,Chromium 便是通过 GYP 进行项目构建管理。
gyp码云下载:gyp: https://github.com/chromium/gyp.git
注:从2022.11.24开始,Breakpad源码中删除了breakpad_client.gyp文件,该文件是基于GYP生成VS工程的,新版已经更新为GN
下载安装,python setup.py install
py版本:
安装好gyp之后(gyp-master.zip),复制到gyp-master目录到google breakpad\src\tools目录下,然后执行命令:gyp --no-circular-check "../../client/windows/breakpad_client.gyp" -Dwin_release_RuntimeLibrary=2 -Dwin_debug_RuntimeLibrary=3
报错提示缺少google test相关文件,因此需要下载google test,可以通过码云下载(googletest: googlegtest仓库https://github.com/google/googletest文档https://google.github.io/googletest/.),文件:googletest.7z
将GoogleTest源码下的googlemock和googletest两个子文件夹拷贝到google breakpad/src/testing目录下,再次执行上述命令:
在windows目录下生成vs工程文件