美文网首页
breakpad解析dump

breakpad解析dump

作者: 三十五岁养老 | 来源:发表于2022-09-06 17:21 被阅读0次

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

breakpad包含三个模块

  • client
    client用户手机崩溃的时候,client收集信息写入特定格式的崩溃信息
  • dump_syms
    dump_syms用于从strip前的so库抽取出调试符号保存到syms符号文件中
  • minidump_stackwalk
    利用minidump_stackwalk,从syms符号文件和包含崩溃信息的dmp文件提取出完整的崩溃调用堆栈

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

  • 在linux平台编译生成的dump_syms 仅能在linux平台运行 ,解析 linux上运行的so符号信息
  • 在mac平台编译生成的dump_syms 仅能在mac平台运行 ,解析mac上运行的so符号信息
  • 在windows平台编译生成的dump_syms 仅能在windows平台运行 ,解析windows上运行的so符号信息

故如果是调试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

使用方法一

  • 使用dump_syms生成符号表: ./dump_syms ~/Test/Caputre > Capture.syms
  • 创建symbol files专有目录结构:
    head -n1 Capture.syms //查看层次文件,得到./symbols/PanoramaCapture/3EXXXXX/
    mkdir -p ./symbols/PanoramaCapture/3EXXXXXX/
  • 将符号文件移动进去 mv Capture.syms ./symbols/PanoramaCapture/3EXXXXX/
  • 利用minidump_stackwalk分析dump文件: ./minidump_stackwalk minidump.dmp ./symbols

得到详细的堆栈信息


zm20220906-1650-2.png

使用方法二

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

  • 生成堆栈信息 ./minidump_stackwalk minidump.dmp > stack.txt

得到以下信息


zm20220906-1718-2.png
  • 使用add2line 生成对应类、函数位置
    aarch64-linux-android-addr2line -C -f -e libtest.so 0x335418

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

相关文章

网友评论

      本文标题:breakpad解析dump

      本文链接:https://www.haomeiwen.com/subject/djsinrtx.html