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

    在breakpad: Native crash 日志收集工具中,详细介绍了breadpad的使用流程,但是在实际操...

  • 软件出发linux crash

    echo c >/proc/sysrq-trigger 使系统奔溃,如果配置了crashdump会生成dump文件...

网友评论

      本文标题:CrashDump

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