原本打算用调试器搞定这个的。无奈android编译的gdbserver不好使。自己编译的在多线程上也是废的。
纠结了一天。打算搜搜android sigsegv。一搜网上还真多这个问题。
看到了下面这篇文章:http://blog.csdn.net/liangshengyang/archive/2010/09/21/5900083.aspx
原来那个logcat的输出是很有用的,原来自己没有在意,不知道它是什么。
I/DEBUG ( 1307): Build fingerprint: 'generic/generic/generic/:2.2.1/MASTER/eng.ll.20110412.135517:eng/test-keys'
I/DEBUG ( 1307): pid: 1570, tid: 1575 >>> /system/bin/mediaserver <<<
I/DEBUG ( 1307): signal 11 (SIGSEGV), fault addr afb1d8c0
I/DEBUG ( 1307): r0 77eefc0a r1 c018950f r2 80000000 r3 00171547
I/DEBUG ( 1307): r4 60000000 r5 c0110a04 r6 00000001 r7 015532c8
I/DEBUG ( 1307): r8 afb200a8 r9 a811b865 10 afb1d8a0 fp afb1d898
I/DEBUG ( 1307): ip ffffd7f0 sp 4081cc60 lr a4917000 pc afb06558 cpsr 00000010
I/DEBUG ( 1307): #00 pc 00006558 a /system/lib/libm.so
I/DEBUG ( 1307): #01 pc 0002cd86 /system/lib/libmedia.so
I/DEBUG ( 1307): #02 pc 0002a48c /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #03 pc 0002a086 /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #04 pc 0002a204 /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #05 pc 00027ed2 /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #06 pc 0003832e /system/lib/libmedia.so
I/DEBUG ( 1307): #07 pc 000266ba /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #08 pc 000132dc /system/lib/libbinder.so
I/DEBUG ( 1307): #09 pc 0001652c /system/lib/libbinder.so
I/DEBUG ( 1307): #10 pc 00016700 /system/lib/libbinder.so
I/DEBUG ( 1307): #11 pc 0001bf08 /system/lib/libbinder.so
I/DEBUG ( 1307): #12 pc 0001b474 /system/lib/libutils.so
I/DEBUG ( 1307): #13 pc 0001b8ca /system/lib/libutils.so
I/DEBUG ( 1307): #14 pc 0001103c /system/lib/libc.so
I/DEBUG ( 1307): #15 pc 00010b20 /system/lib/libc.so
I/DEBUG ( 1307):
I/DEBUG ( 1307): code around pc:
I/DEBUG ( 1307): afb06538 e59f2208 e59f3208 e1a00004 e1a01005
I/DEBUG ( 1307): afb06548 ebffee89 e59fc1fc e088b00c e08ba186
I/DEBUG ( 1307): afb06558 e1ca22d0 ebffee90 ebffeeb0 e1a06000
I/DEBUG ( 1307): afb06568 ebffeea2 e3a0232e e1a02342 e59f31d8
I/DEBUG ( 1307): afb06578 e1a08000 e1a09001 ebffee7b e1a02000
I/DEBUG ( 1307):
I/DEBUG ( 1307): code around lr:
I/DEBUG ( 1307): a4916fe0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 1307): a4916ff0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 1307): a4917000 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 1307): a4917010 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 1307): a4917020 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 1307):
I/DEBUG ( 1307): stack:
I/DEBUG ( 1307): 4081cc20 00000000
I/DEBUG ( 1307): 4081cc24 c0000001
I/DEBUG ( 1307): 4081cc28 a8216155 /system/lib/libbinder.so
I/DEBUG ( 1307): 4081cc2c 015557c0 [heap]
I/DEBUG ( 1307): 4081cc30 00000000
I/DEBUG ( 1307): 4081cc34 01555b30 [heap]
I/DEBUG ( 1307): 4081cc38 000000a8
I/DEBUG ( 1307): 4081cc3c 000000f0
I/DEBUG ( 1307): 4081cc40 000000a8
I/DEBUG ( 1307): 4081cc44 00000000
I/DEBUG ( 1307): 4081cc48 01554e28 [heap]
I/DEBUG ( 1307): 4081cc4c a8113c51 /system/lib/libutils.so
I/DEBUG ( 1307): 4081cc50 60000000
I/DEBUG ( 1307): 4081cc54 c0110a04
I/DEBUG ( 1307): 4081cc58 df002777
I/DEBUG ( 1307): 4081cc5c e3a070ad
I/DEBUG ( 1307): #00 4081cc60 01554d58 [heap]
I/DEBUG ( 1307): 4081cc64 4081cc88
I/DEBUG ( 1307): 4081cc68 00000014
I/DEBUG ( 1307): 4081cc6c a905cb70 /system/lib/libmedia.so
I/DEBUG ( 1307): 4081cc70 01553198 [heap]
I/DEBUG ( 1307): 4081cc74 0000000f
I/DEBUG ( 1307): 4081cc78 015532c8 [heap]
I/DEBUG ( 1307): 4081cc7c 00100000
I/DEBUG ( 1307): 4081cc80 a811b865 /system/lib/libutils.so
I/DEBUG ( 1307): 4081cc84 4071d000
I/DEBUG ( 1307): 4081cc88 01554dc0 [heap]
I/DEBUG ( 1307): 4081cc8c a902cd89 /system/lib/libmedia.so
I/DEBUG ( 1307): #01 4081cc90 00000008
I/DEBUG ( 1307): 4081cc94 a8d2a48f /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #00 pc 00006558(这个是在二进程文件中的地址,没有包含加载地址了) a /system/lib/libm.so
I/DEBUG ( 1307): #01 pc 0002cd86 /system/lib/libmedia.so
I/DEBUG ( 1307): #02 pc 0002a48c /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #03 pc 0002a086 /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #04 pc 0002a204 /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #05 pc 00027ed2 /system/lib/libaudioflinger.so
I/DEBUG ( 1307): #06 pc 0003832e /system/lib/libmedia.so
这些就是调用堆栈。那个最上面的就是程序出错的地方,就是libm.so里出了错。靠,我还用调试器找到是libm.so。还想找出错的地址。见那篇文章中的方法。
src/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-addr2line -f -e src/out /target/product/pnx6715_refd/symbols/system/lib/libfmradio_jni.so 0000960c 000129ec 0000cdce 0000b2a4 00009496 00008258 000054f6