如何分析CoreDump文件

如何分析CoreDump文件

CoreDump文件一般位于手机/data/core/目录下,如/data/core/!system!bin!app_process32.8115.QSTileHost

1.使用Eclipse ADT分析coredump

     Eclipse-->Run-->Debug Configurations-->C/C++ Postmortem Debugger 右击New或者双击生成一个New configuration:

Eclipse Debug configurations 1.png

Name: 随便取一个标识此次debug的名字

C/C++ Application: /data1/AJ9_3/out/target/product/idol347/symbols/system/bin/app_process32
 (通过查看从手机导出来的coredump文件名,来看具体填哪个bin,本次调试用corefile文件名为!system!bin!app_process32.7740.QSTileHost,很明显就是app_process32 )

Core file: /data1/AJ9_3/coredump/!system!bin!app_process32.7740.QSTileHost
(从手机data/core目录导出来)

GDB debugger: /data1/AJ9_3/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin/arm-linux-androideabi-gdb

Shared Libraries: /data1/AJ9_3/out/target/product/idol347/symbols/system/lib/
(带symbol的共享库文件)

Eclipse Debug configurations 2.png Eclipse Debug configurations 3.png

待这以上几项都配置好了,点击Debug,确认OK就可显示crash信息。

Eclipse Debug configurations 4.png

点击Yes确认,进入Debug界面:

Eclipse Debug configurations 5.png

通过Debug栏依照Thread ID从小到大查看,发现Thread[1] 定位SetTorchBrightness() at torchnative.cpp:157, 发现strcpy()有问题。

2.直接通过gdb工具分析CoreDump定位问题

1)shell终端执行命令:gdb文件 手机可执行程序文件名 core文件名

user@aclgcl-ubnt:/data1/AJ9_3$ ./prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin/arm-linux-androideabi-gdb out/target/product/idol347/symbols/system /bin/app_process32 ./coredump/\!system\!bin\!app_process32.7740.QSTileHost

3)gdb终端执行命令:set solib-search-patch 共享库位置

(gdb) set solib-search-path out/target/product/idol347/symbols/system/lib/

4)gdb终端执行bt命令查看backstack信息

(gdb) bt

user@aclgcl-ubnt:/data1/AJ9_3$./prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8/bin/arm-linux-androideabi-gdb out/target/product/idol347/symbols/system
/bin/app_process32 ./coredump/\!system\!bin\!app_process32.7740.QSTileHost
GNU gdb (GDB) 7.6 
Copyright (C) 2013 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law.  Type "show copying" 
and "show warranty" for details. 
This GDB was configured as "--host=x86_64-linux-gnu --target=arm-linux-android". 
For bug reporting instructions, please see: 
<http://source.android.com/source/report-bugs.html>... 
Reading symbols from /data1/AJ9_3/out/target/product/idol347/symbols/system/bin/app_process32...done. 

warning: core file may not match specified executable file. 
[New LWP 7804] 
[New LWP 7749] 
[New LWP 7757] 
.
.
.
[New LWP 7740] 
[New LWP 7803] 
[New LWP 7802] 

warning: Could not load shared library symbols for 115 libraries, e.g. /system/bin/linker. 
Use the "info sharedlibrary" command to see the complete listing. 
Do you need "set solib-search-path" or "set sysroot"? 
Core was generated by `com.android.systemui                                                       '. 
Program terminated with signal 11, Segmentation fault. 
#0  0xb6f880b2 in ?? () 
(gdb) set solib-search-path out/target/product/idol347/symbols/system/lib/ 
Reading symbols from /data1/AJ9_3/out/target/product/idol347/symbols/system/lib/libc.so...done. 
Loaded symbols for /data1/AJ9_3/out/target/product/idol347/symbols/system/lib/libc.so 
Reading symbols from /data1/AJ9_3/out/target/product/idol347/symbols/system/lib/libm.so...done. 
.
.
.
Loaded symbols for /data1/AJ9_3/out/target/product/idol347/symbols/system/lib/libmemalloc.so 
Reading symbols from /data1/AJ9_3/out/target/product/idol347/symbols/system/lib/libqdMetaData.so...done. 
Loaded symbols for /data1/AJ9_3/out/target/product/idol347/symbols/system/lib/libqdMetaData.so 
(gdb) bt 
#0  0xb6f880b2 in strcpy () at bionic/libc/arch-arm/cortex-a15/bionic/strcpy.S:81 
#1  0xa5bf26e6 in strcpy (src=0xa5bf299d "TEST", dest=0xa5bf2998 "test") at bionic/libc/include/string.h:119 
#2  SetTorchBrightness (env=<optimized out>, thiz=<optimized out>, brightness=200) at frameworks/base/packages/SystemUI/jni/torchnative.cpp:157 
#3  0x00000024 in ?? () 
#4  0x00000024 in ?? () 
Backtrace stopped: previous frame identical to this frame (corrupt stack?) 
(gdb)

同样定位问题在torchnative.cpp:157 strcpy函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值