使用Breakpad分析Webview的崩溃dump

背景

在Android开发过程中,经常会用到Webview来加载H5内容。偶尔就会出现一些崩溃,崩溃信息中会出现crashpad相关的日志,需要用 minidump_stackwalk 来进行解析

1
2
05-30 11:09:32.950 14200 14200 F crashpad: -----BEGIN CRASHPAD MINIDUMP-----
05-30 11:09:32.950 14200 14200 F crashpad: )iyJD'cB?s16Rlq9!?S8\@]-!]ZyG@f>*=m,WE&-Z9;9yRMGn@J[-[EY}Hr[KSd<xQJ[)^GZx[y&RS3_?lww|3&Dw]ts!V|X6ERLFjcKBu5LR2vl)gzFcK<UlkUr35XA7,(-sX;MTIgE^tluFZ]_DcEwEm{/%r(QU*{GicVW|Z*N?f"N)P4m*1}Mqh,AquFwni3Lgg')#)&`xsXp4q>-RhQN1VkW$fLSzv\0!Nk@NK}KQ]k:SwgeEwmR2<8$?^p.`[email protected]<I<ygMWwm5q,ncV"B5DD}ke2;K<1hYm~@2lb%X|owx.AGuAKHVM9P\AhN!|;M]zQo?a.7PbB=$ikQ|E[;:FKOOX7oyV`a@f2;7`5Sc0u-QPP]]K"Ejg(dbrn7^e|RGXJmm@(r@9,^f1IGt6nomuU?\u,3&x'cZ[wooINH&4U@Wnp7/`,gBb7o+E{r`r.rC,#Oq`e&N<4Ul=pHYJh9`;IPebn)o{d8#i~0%t2d(H<`M[y|

步骤

1. 准备 minidump_stackwalk 工具

minidump_stackwalk 是breakpad工具的一部分,需要自己构建出来,步骤如下:

  1. 准备 depot_tools 工具
    下载代码

    1
    $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

    配置环境变量

    1
    2
    $ export PATH=/path/to/depot_tools:$PATH

  2. 下载 breakpad 源码

    1
    2
    3
    4
    mkdir breakpad && cd breakpad

    fetch breakpad
    cd src
  3. 构建 breakpad

    1
    ./configure && make

    产物路径是: src/processor/minidump_stackwalk

2. 取出 dump 文件

不同版本的 dump 文件路径不一样,我手头这个 Android14 系统的dump文件在下面这个路径中:

1
/data/data/{package name}/cache/WebView/Crashpad/new

3. 解析dump文件

1
./src/processor/minidump_stackwalk {path to dump file}

参考