1.先下载Breakpad1)下载breakpad: breakpad源码可在 https://github.com/google/breakpad.git
2。需要将linux_syscall_support.h文件放在这个目录下
3. 编译
控制台cd breakpad 进入目录
运行指令 ./configure
运行指令 make
运行指令 sudo make install
4.使用dump_syms 命令生成sym 。dump_syms CtrlSYS > CtrlSYS.sym//最好名字和程序一样
5.查看HEADER号,直接打开CtrlSYS.sym。
6.在.dmp文件同级目录创建文件夹和文件,注意symbols里面的文件夹和应用程序名一样,位置如下:
7.使用 minidump_stackwalk 。minidump_stackwalk 9d86f79a-9362-400f-cae82c8e-50e14530.dmp ./symbols >000.txt
8.查看log
9.shell 脚本
#!/bin/bash
if [ $# != 2 ] ; then
echo "USAGE: $0 EXE_NAME DMP_NAME"
echo " e.g.: $0 test 3872B2CF-983B-4963-AFA9-C8534DFD4C44.dmp"
exit 1;
fi
#get input param
exe_file_name=$1
dmp_file_name=$2
getSymbol() {
dump_syms ./$exe_file_name > $exe_file_name'.sym'
}
getStackTrace() {
sym_file_name=$exe_file_name'.sym'
#get first line of $sym_file_name
line1=`head -n1 $sym_file_name`
#get version number from string of first line
OIFS=$IFS; IFS=" "; set -- $line1; aa=$1;bb=$2;cc=$3;dd=$4; IFS=$OIFS
version_number=$dd
#make standard dir and move *.sym in it
mkdir -p ./symbols/$exe_file_name/$version_number
mv $sym_file_name ./symbols/$exe_file_name/$version_number
#print stack trace at a file
minidump_stackwalk $dmp_file_name ./symbols 2>/dev/null >crashInfo.log
#print crash information
crashReason=`sed -n 9p ./crashInfo.log`
echo $crashReason
crashaddr=`sed -n 10p ./crashInfo.log`
echo $crashaddr
addrNum=${crashaddr:15:30}
echo -n "Crash Location: Crash in "
addr2line $addrNum -e $exe_file_name -f -p
}
main() {
getSymbol
if [ $? == 0 ]
then
getStackTrace
fi
}
main