得到DMP文件,必须转成文本文件才能看崩溃调用栈,转化过程方法如下:
一、前提条件:
1、得到*.dmp文件
2、得到对应的代码obj路径下的*.so文件
3、我自己是在Linux(CentOS 6.5)下测试的,实在不知道在win7下怎么做
二、生成转换工具
1、下载BreakPad源代码
命令行输入:svn checkout http://google-breakpad.googlecode.com/svn/trunk/ google-breakpad-read-only
2、编译工具
①进入代码路径
cd google-breakpad-read-only/
②配置环境
./configure
③编译工具
make
3、看看以下工具是否存在:
google-breakpad-read-only/src/tools/linux/dump_syms/dump_syms
google-breakpad-read-only/src/processor/minidump_stackwalk
三、把dmp文件转为txt文件:
1、建立一个空文件夹,里面放进四个必要文件
minidump_stackwalk
dump_syms
dd3023f-f8bd-37c3-46e78f56-151901b1.dmp(假设的dmp文件)
libgame.so(dmp文件对应的代码obj路径里的so文件)
2、准备symbols:
①导出symbols文件
./dump_syms libgame.so > libgame.so.sym
②建立symbols文件夹
创建文件夹 symbols/libgame.so/2D1C163A1347A1190B26F10560E926CE0
后面那个一堆乱数字是前一步生成的“libgame.so.sym”文件的第一行复制出来的
③复制libgame.so.sym到新文件夹中,最终它的路径:
symbols/libgame.so/2D1C163A1347A1190B26F10560E926CE0/libgame.so.sym
四、导出文本信息:
1、返回到第三步建立的那个文件夹的根部,执行
./minidump_stackwalk dd3023f-f8bd-37c3-46e78f56-151901b1.dmp symbols/ > DmpInfo20140228.txt
2、查看新文件“DmpInfo20140228.txt”里面就有崩溃文本信息
全文完
11:08 2014/2/28
20151130
如果看不到调用栈源代码,就用ndk工具来生成源代码文件和行数
arm-linux-androideabi-addr2line.exe -C -f -e ./xxx.so 0x186759
http://download.csdn.net/detail/lailizhen/7683649
这个下载版本可以用,别的很多版本无法生成dump_syms