android segment fault logcat相关信息分析

--------------------------------------------------------------------------------------
---------beginning of /dev/log/main

D/dalvikvm( 997): GC_FOR_MALLOC freed 14318 objects / 713376 bytes in 44ms

I/DEBUG  (  781): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

I/DEBUG  (  781): Build fingerprint: 'generic/generic_mt5396/mt5396/mt5396:2.2/MASTER/eng.mtk71133.20120116.143429:eng/test-keys'

I/DEBUG  (  781): pid: 1629, tid: 1638  >>> ./test_segment_fault<<<  #这里表示出错的进程的名字

I/DEBUG  (  781): signal 11 (SIGSEGV), fault addr00000000               #sig 11就是segment fault的错误

I/DEBUG  (  781):  r0 00000000  r1 00000000  r2 00000000  r300000000

I/DEBUG  (  781):  r4 800020e8  r5 00000000  r6 00000000  r700000078

I/DEBUG  (  781):  r8 00100000  r9 0000879d  10 10000000  fp00000000

I/DEBUG  (  781):  ip afd44728  sp 100ffe40  lr 800012b3  pc80000a5a  cpsr 20000030

I/DEBUG  (  781):  d0  00000000bd6bc8e3  d1  0000000000000000

I/DEBUG  (  781):  d2  0000000000000000  d3  0000000000000000

I/DEBUG  (  781):  d4  0000000000000000  d5  0000000000000000

I/DEBUG  (  781):  d6  0000000000000000  d7  c18af96700000000

I/DEBUG  (  781):  d8  0000000000000000  d9  0000000000000000

I/DEBUG  (  781):  d10 0000000000000000  d11 0000000000000000

I/DEBUG  (  781):  d12 0000000000000000  d13 0000000000000000

I/DEBUG  (  781):  d14 0000000000000000  d15 0000000000000000

I/DEBUG  (  781):  scr 00000000

I/DEBUG  (  781):

I/DEBUG  (  781):          #00 pc 00000a5a  /system/lib/libdummy_mayer.so #00 指示的地址访问出错的调用地方,并且出错的文件也给了出来:libdummy_mayer.so

I/DEBUG  (  781):          #01 pc 000012ae  /system/lib/libdummy_mayer.so

I/DEBUG  (  781):          #02 pc 00008918  /mnt/usbdisk/test_segment_fault

I/DEBUG  (  781):          #03 pc 000111d4  /system/lib/libc.so

I/DEBUG  (  781):          #04 pc 00010cc4  /system/lib/libc.so

I/DEBUG  (  781):

I/DEBUG  (  781): code around pc:

I/DEBUG  (  781): 80000a38 681a9b01 429a9b01 2300bf14 46182301

I/DEBUG  (  781): 80000a48 4770b002 f04fb082 93010300 f04f9b01

I/DEBUG  (  781): 80000a58 701a0200 4770b002 b088b510 bf004c54

I/DEBUG  (  781): 80000a68 441ca300 f04f9003 93070300 0300f04f

I/DEBUG  (  781): 80000a78 f04f9306 93050300 2b009b03 4b4dd11c

I/DEBUG  (  781):

I/DEBUG  (  781): code around lr:

I/DEBUG  (  781): 80001290 f9d8f000 44234bac 2b03681b 9b03dc07

I/DEBUG  (  781): 800012a0 2b04681b 9b04d003 2b55781b f7ffd101

I/DEBUG  (  781): 800012b0 9b10fbcd 4ba09300 f10358e3 4ba800a8

I/DEBUG  (  781): 800012c0 46194423 44234b9e f44f461a f7ff73e9

I/DEBUG  (  781): 800012d0 9b10eaac f04fe12b 930c0300 f1039b0d

I/DEBUG  (  781):

I/DEBUG  (  781): stack:

I/DEBUG  (  781):     100ffe00  10000000 

I/DEBUG  (  781):     100ffe04  afd0bacd /system/lib/libc.so

I/DEBUG  (  781):     100ffe08  10000000 

I/DEBUG  (  781):     100ffe0c  afd10944  /system/lib/libc.so

I/DEBUG  (  781):     100ffe10  000013e8 

I/DEBUG  (  781):     100ffe14  0000d924  [heap]

I/DEBUG  (  781):     100ffe18  0000d928  [heap]

I/DEBUG  (  781):     100ffe1c  800020e8 /system/lib/libdummy_mayer.so

I/DEBUG  (  781):     100ffe20  00000000 

I/DEBUG  (  781):     100ffe24  00000000 

。。。。。。。。后面的不再列举出来了

--------------------------------------------------------------------------------------

前提:能得到以上信息,需要是debug版本的android哦


分析:

由以上信息我们可以知道具体出错的位置:#00 pc 00000a5a  /system/lib/libdummy_mayer.so

 

根据以上信息找到对应出错的代码的地方(以下操作环境位于rd编译环境中,非board中):

 

 A:首先需要到编译该debug版本的地方,进入android froyo目录:  cdvm_linux/android/froyo-2.2

 B:找到nonstrippedlibdummy_mayer.so文件,find./ -name libdummy_mayer.so,一般都位于out/target/product/mt5396/symbols/的子目录

   这里是out/target/product/mt5396/symbols/system/lib/libdummy_mayer.so

C:使用addr2line找到对应的代码:

   ./prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-addr2line-f -e out/target/product/mt5396/symbols/system/lib/libdummy_mayer.so 00000a5a

   其输出类似如下:

dummy_function    #这里显示的出错的地方所在的函数名,即死在哪个函数里面的

.../froyo-2.2/external/test_segment_fault/libdummys/ipc_msgq.c:103   #这里显示的是具体出错的地方,哪个文件多少行



你可能感兴趣的:(c,android,Build,FP,Signal)