Android 下基于core文件分析crash信息

LinuxCore文件能够帮助我们定位信息,Android下同样也可以生成Core文件。下面举例说明:

首先请阅读上面章节中,如何生成带调试信息的可调式执行程序以及so库。

然后,adb push到虚拟仿真机中。

  for(int i = 0;i<3;i++)

    {

   printf("i = %d\n",i);

   char * p=NULL;

   char src[]="1232222222";

   strcpy(p, src);

     }

上面程序中strcpy(p, src);会出现内存访问错误。下面举例如何定位该问题。

程序运行一次for循环后,出现内存访问错误,异常停止。

如果需要生成core文件,而不采用gdb调试,则需要设置仿真机中的adb shell文件。

进入adb shell环境:

# ulimit -c unlimited

# ulimit -a

time(seconds)        unlimited

file(blocks)         unlimited

data(kbytes)         unlimited

stack(kbytes)        8192

coredump(blocks)     unlimited

memory(kbytes)       unlimited

locked memory(kbytes) 64

process(processes)   4096

nofiles(descriptors) 1024

#

使用命令

# ulimit -c unlimited

开启core文件生成机制。

使用命令

# ulimit -a

可以看到是否开启。

再次执行被测程序:

# ./temptest

main enter

i = 0

[1] + Stopped (signal)        ./temptest

# ls

core

gdb.setup

gdbserver

libcrystax.so

libgnustl_shared.so

temptest

[1]   Segmentation fault (core dumped) ./temptest

#

可以发现生成了core文件。

在另一个终端中找到arm-linux-androideabi-gdb工具所在目录

#cd  /opt/android-ndk-r7-crystax-1/toolchains/arm-linux-androideabi-4.6.3/prebuilt/linux-x86/bin

使用命令adb pullcore文件下载下来:

[root@bogon bin]# adb pull /data/data/xtest/core

1155 KB/s (1601536 bytes in 1.353s)

[root@bogon bin]#

使用arm-linux-androideabi-gdb进行core文件调试。

[root@bogon bin]#  arm-linux-androideabi-gdb -c core /home/testCodes/obj/local/armeabi-v7a/temptest

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coloriy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值