CrashDump

作者: difcareer | 来源:发表于2017-02-23 19:59 被阅读473次

    breakpad: Native crash 日志收集工具中,详细介绍了breadpad的使用流程,但是在实际操作过程中,发现有如下问题需要解决:

    1. native的崩溃堆栈和Java层的崩溃堆栈如何对应?在腾讯的bugly上可以看到他们解决了这个问题:
    https://bugly.qq.com/v2/crash/apps/900035977/issues/24?pid=1
    1. 符号表需要放到特定的文件结构中才能解析。

    针对于问题1,我已经解决,但目前不开源,大家可以去逆向看看腾讯的实现。

    针对于问题2,我已经编写shell脚本自动化解决。

    github打不开了,直接上源码:

    InstallSym.sh

    使用:./InstallSym.sh path/of/so_file [/path/of/symbol/]
    传递so路径,即可生成对应的符号表,并安装在合适的目录下。

    #! /bin/bash
    
    if [ $# -lt 1 ]; then
      echo "Usage: $0 /path/of/so_file [/path/of/symbol/]"
      exit 0
    fi
    
    so_path=$1
    symbol_path="symbol"
    if [ $# -eq 2 ]; then
      symbol_path=$2
    fi
    
    echo "start install Symbol:$so_path, symbol:$symbol_path"
    so_name=$(basename $1)
    
    #0
    if [ ! -d $symbol_path ];then
      echo "create dir: ${symbol_path}"
      mkdir ${symbol_path}
    fi
    
    #1
    sub_dir=${symbol_path}/${so_name}
    if [ ! -d $sub_dir ];then
      echo "create dir: ${sub_dir}"
      mkdir ${sub_dir}
    fi
    
    #2
    echo "dump_syms $so_path > ${so_name}.sym"
    dump_syms $so_path > ${so_name}.sym
    
    #3
    uid=`head -n 1 ${so_name}.sym | awk '{print $4}'`
    echo $uid
    sub_dir=${sub_dir}/${uid}
    if [ ! -d $sub_dir ];then
      echo "create dir: ${sub_dir}"
      mkdir ${sub_dir}
    fi
    
    #4
    mv ${so_name}.sym ${symbol_path}/${so_name}/${uid}
    echo "symbol installed!"
    

    相关文章

      网友评论

          本文标题:CrashDump

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