breakpad解析dump

2022-09-06  本文已影响0人  三十五岁养老

Google Breakpad是Google开发的一个跨平台异常捕获和dump文件生成的开发库。利用这个库可以在Windows, Mac, Linux, iOS, Android平台上对C/C++程序异常崩溃进行捕获,并生成dump文件供后期调试。

breakpad包含三个模块

breakpad使用

编译

1、获取breakpad源码
git clone https://github.com/google/breakpad.git

2、 进入到Breakpad的下载目录,创建mac目录

3、指定编译目录(-prefix 需要指定绝对路径),开始编译

*** 换成自己的绝对路径
./configure -prefix=***/breakpad/mac/  
make

4、编译完成后,可以在mac目录下看到编译后的产物,
minidump_stackwalk 文件,用来根据 minidump 文件生成堆栈跟踪log


zm20220906-1542-2.png

libbreakpad.a文件,可以直接集成在client里面


Screenshot2022_09_06_162915.jpg

dump_syms工具在src/tools下面, mac平台需要xcode工程打开对应目录工程编译
最新代码可能编译不通过,可参考:
https://groups.google.com/g/google-breakpad-discuss/c/fierVnIAv1M

故如果是调试Android设备,需要在linux设备上编译dump_syms
如果使用mac上编译的dump_syms提取android native的so 会出现以下提示

file is neither a fat binary file nor a Mach-O object file

在mac上执行 linux编译的dump_syms提取android native的so 会出现以下提示

zsh: exec format error: dump_syms

使用方法一

得到详细的堆栈信息


zm20220906-1650-2.png

使用方法二

在mac上面调试Android native崩溃时,mac无法生成linux的dump_syms
但是minidump_stackwalk提取dump文件的堆栈信息不受影响,故可以采用minidump_stackwalk + add2line结合的方式

得到以下信息


zm20220906-1718-2.png

参考链接:
https://wenku.baidu.com/view/02de4975322b3169a45177232f60ddccda38e662.html

上一篇 下一篇

猜你喜欢

热点阅读