android framework异常时会打印如下log,分析往往无从下手:
24422 08-17 15:09:02.212 I/DEBUG ( 52): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
24423 08-17 15:09:02.212 I/DEBUG ( 52): Build fingerprint: 'marvell/roewe_v2/roewe_v2/:1.5/CUPCAKE/10000:user/ota-rel-keys,test-keys'24424 08-17 15:09:02.212 I/DEBUG ( 52): pid: 84, tid: 90 >>> system_server <<<
24425 08-17 15:09:02.212 I/DEBUG ( 52): signal 11 (SIGSEGV), fault addr 00000000
24426 08-17 15:09:02.212 I/DEBUG ( 52): r0 51100404 r1 00000002 r2 0000031f r3 00000841
24427 08-17 15:09:02.212 I/DEBUG ( 52): r4 00000800 r5 000001b8 r6 00000000 r7 000001b8
24428 08-17 15:09:02.212 I/DEBUG ( 52): r8 00100000 r9 a9d28545 10 47c7b000 fp 0018f758
24429 08-17 15:09:02.212 I/DEBUG ( 52): ip 00000840 sp 47d7ac44 lr acf0b1f8 pc acf0b1c4 cpsr a0000010
24430 08-17 15:09:02.376 I/DEBUG ( 52): #00 pc 0000b1c4 /system/lib/libpixelflinger.so
24431 08-17 15:09:02.376 I/DEBUG ( 52): #01 pc 0000b1f4 /system/lib/libpixelflinger.so
24432 08-17 15:09:02.384 I/DEBUG ( 52): #02 pc 000098ec /system/lib/libpixelflinger.so
24433 08-17 15:09:02.384 I/DEBUG ( 52): #03 pc 00014ed0 /system/lib/libagl.so
24434 08-17 15:09:02.384 I/DEBUG ( 52): #04 pc 00014f24 /system/lib/libagl.so
24435 08-17 15:09:02.384 I/DEBUG ( 52): #05 pc 00026e6a /system/lib/libsurfaceflinger.so
24436 08-17 15:09:02.392 I/DEBUG ( 52): #06 pc 000255e8 /system/lib/libsurfaceflinger.so
24437 08-17 15:09:02.392 I/DEBUG ( 52): #07 pc 0002657c /system/lib/libsurfaceflinger.so
24438 08-17 15:09:02.399 I/DEBUG ( 52): #08 pc 0002d2ee /system/lib/libsurfaceflinger.so
24439 08-17 15:09:02.399 I/DEBUG ( 52): #09 pc 0002d4f2 /system/lib/libsurfaceflinger.so
24440 08-17 15:09:02.399 I/DEBUG ( 52): #10 pc 0002e264 /system/lib/libsurfaceflinger.so
24441 08-17 15:09:02.399 I/DEBUG ( 52): #11 pc 000280b2 /system/lib/libutils.so
24442 08-17 15:09:02.399 I/DEBUG ( 52): #12 pc 000285dc /system/lib/libutils.so
24443 08-17 15:09:02.407 I/DEBUG ( 52): #13 pc 00011394 /system/lib/libc.so
24444 08-17 15:09:02.407 I/DEBUG ( 52): #14 pc 00010e78 /system/lib/libc.so
24445 08-17 15:09:02.407 I/DEBUG ( 52): stack:
24446 08-17 15:09:02.407 I/DEBUG ( 52): 47d7ac04 03515104
24447 08-17 15:09:02.407 I/DEBUG ( 52): 47d7ac08 47d7ace0
24448 08-17 15:09:02.407 I/DEBUG ( 52): 47d7ac0c 00190080 [heap]
24449 08-17 15:09:02.415 I/DEBUG ( 52): 47d7ac10 acf16558 /system/lib/libpixelflinger.so
24450 08-17 15:09:02.415 I/DEBUG ( 52): 47d7ac14 47d7ac20
24451 08-17 15:09:02.415 I/DEBUG ( 52): 47d7ac18 03515104
因此编写了一个python脚本分析堆栈信息:
#!/usr/bin/env python
#By Hu Yugui
import string
import os
fd=open("dump_stack.log")
LIBS="/work2/DDD/out/target/product/FFF/symbols" #android image
GCC ="arm-none-linux-gnueabi-addr2line -C -f -e" #addr2line
i = 0
for line in fd:
if line.strip():
i=i+1
line=line.rstrip()
p=line.split()
cmd = GCC + " " + LIBS + p[9] + " " + p[8]
result=os.popen(cmd)
print "<%d> %s" % (i, result.read().strip())
输出如下: