addr2line 定位so崩溃位置

jxtgddlt 2013-02-04 05:26:53

02-04 15:17:30.830: I/XCEngine(24736): ;
02-04 15:17:30.830: W/XCEngine(24736): [WARN]CUIWindowMgr::scCmdRecvData - open window(client request) with json
02-04 15:17:30.860: A/libc(24736): Fatal signal 11 (SIGSEGV) at 0xfffffffc (code=1)
02-04 15:17:31.180: V/AudioHardwareMSM8660(134): AudioStreamOutMSM72xx::write(0x14af918, 4800) dev = speaker_stereo_rx
02-04 15:17:31.380: I/DEBUG(24552): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
02-04 15:17:31.380: I/DEBUG(24552): Build fingerprint: 'Xiaomi/mione_plus/mione_plus:4.0.4/IMM76D/2.10.19:user/release-keys'
02-04 15:17:31.380: I/DEBUG(24552): pid: 24736, tid: 24760 >>> proj.syjt <<<
02-04 15:17:31.380: I/DEBUG(24552): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr fffffffc
02-04 15:17:31.380: I/DEBUG(24552): r0 fffffffc r1 ffffffff r2 02dda138 r3 fffffff4
02-04 15:17:31.380: I/DEBUG(24552): r4 fffffff4 r5 fffffffc r6 ffff0fc0 r7 ffffffff
02-04 15:17:31.380: I/DEBUG(24552): r8 01721650 r9 017216dc 10 40106638 fp 5bb7ec24
02-04 15:17:31.380: I/DEBUG(24552): ip ffe53708 sp 5bb7e748 lr 5cf69c1b pc 5ce8eb10 cpsr 80000010
02-04 15:17:31.380: I/DEBUG(24552): d0 0000000000000000 d1 0000000000000000
02-04 15:17:31.380: I/DEBUG(24552): d2 0000000000000000 d3 0000000000000000
02-04 15:17:31.380: I/DEBUG(24552): d4 746c02e3e440f4e4 d5 8080e2e4e47c7501
02-04 15:17:31.390: I/DEBUG(24552): d6 02e3e4d8e48c8183 d7 e0e4e46c5c017157
02-04 15:17:31.390: I/DEBUG(24552): d8 0000000000000000 d9 0000000000000000
02-04 15:17:31.390: I/DEBUG(24552): d10 0000000000000000 d11 0000000000000000
02-04 15:17:31.390: I/DEBUG(24552): d12 0000000000000000 d13 0000000000000000
02-04 15:17:31.390: I/DEBUG(24552): d14 0000000000000000 d15 0000000000000000
02-04 15:17:31.390: I/DEBUG(24552): d16 f4e4e4e4e4d4cbd4 d17 7501746c02e3e441
02-04 15:17:31.390: I/DEBUG(24552): d18 838a8b83ece4e47c d19 02e3e4d8e47c6c02
02-04 15:17:31.390: I/DEBUG(24552): d20 e0e4e46c5c017157 d21 f4e4e4e4e4d4cbd4
02-04 15:17:31.390: I/DEBUG(24552): d22 7501746c02e3e442 d23 536b01d5e1e4e47c
02-04 15:17:31.390: I/DEBUG(24552): d24 01d401d301d201d1 d25 01d801d701d601d5
02-04 15:17:31.390: I/DEBUG(24552): d26 0000000000000000 d27 0000000000000000
02-04 15:17:31.390: I/DEBUG(24552): d28 01ac01ab01aa01a9 d29 01b001af01ae01ad
02-04 15:17:31.390: I/DEBUG(24552): d30 01d801d801d801d8 d31 0000000000000000
02-04 15:17:31.390: I/DEBUG(24552): scr 20000012
02-04 15:17:31.520: I/DEBUG(24552): #00 pc 5ce8eb10 /data/data/proj.syjt/app_libs/libsyjt.so
02-04 15:17:31.520: I/DEBUG(24552): #01 lr 5cf69c1b /data/data/proj.syjt/app_libs/libsyjt.so

02-04 15:17:31.520: I/DEBUG(24552): code around pc:
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eaf0 e0562002 e0c73003 e1cc20f0 e8bd80f8 . V..0... ......
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eb00 e92d40f8 e59f6028 e1a05000 e1a07001 .@-.(`...P...p..
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eb10 e5954000 e1a02005 e1a00004 e0841007 .@... ..........
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eb20 e12fff36 e3500000 1afffff8 e1a00004 6./...P.........
02-04 15:17:31.520: I/DEBUG(24552): 5ce8eb30 e8bd80f8 ffff0fc0 e92d40f8 e59f6028 .........@-.(`..
02-04 15:17:31.520: I/DEBUG(24552): code around lr:
02-04 15:17:31.520: I/DEBUG(24552): 5cf69bf8 fffffc9c 60012300 60830049 81831840 .....#.`I..`@...
02-04 15:17:31.520: I/DEBUG(24552): 5cf69c08 46c04770 2101b510 42491c04 f0d13008 pG.F...!..IB.0..
02-04 15:17:31.520: I/DEBUG(24552): 5cf69c18 2800fbe7 1c20dc02 fb92f0d1 46c0bd10 ...(.. ........F
02-04 15:17:31.520: I/DEBUG(24552): 5cf69c28 4b05b508 447b4a05 4298589b bd08d100 ...K.J{D.X.B....
02-04 15:17:31.520: I/DEBUG(24552): 5cf69c38 ffe8f7ff 46c0e7fb 002ad5ca fffffca0 .......F..*.....
02-04 15:17:31.520: I/DEBUG(24552): memory map around addr fffffffc:
02-04 15:17:31.520: I/DEBUG(24552): ffff0000-ffff1000 [vectors]
02-04 15:17:31.520: I/DEBUG(24552): (no map for address)
02-04 15:17:31.520: I/DEBUG(24552): (no map above)
02-04 15:17:31.520: I/DEBUG(24552): stack:
02-04 15:17:31.520: I/DEBUG(24552): 5bb7e708 02e1556a [heap]

每次不同地方崩溃(不下十次),我用addr2line -C -f -e obj/local/armeabi/libsyjt.so 5ce8eb10 定位错误都显示
??
??:0




是不是5ce8eb10地址应该 减去 基地址 然后才是真正的地址啊?这个基地址用什么命令可以显示?
...全文
5264 点赞 收藏 10
写回复
10 条回复
prairie79 2014年10月30日
关于Android JNI 编程如何定位段错误的问题(addr2line的使用): 1.普通的应用程序或者静动态库,如果你想用addr2line 来定位段错误出在哪一行,请记住在编译它们的时候一定加上编译选项 -g 它会生成symbols信息 在你的exe or lib 里面。 2.NDK编译生成静动态库就没有必要在Android.mk的编译选项里面加-g了,应为ndk默认就会生成symbols,这个是我做实验得出来的结论。
回复 点赞
ken_yytd 2014年10月27日
关键是如何获取so的基地址的问题, 我也不懂如何获取, 请问楼上的obj/local/armeabi/libsyjt.so这个目录中的so应该是有符号的, 难还要通过什么编译选项打开符号表的生成功能吗?
回复 点赞
kunzhizhu 2013年02月07日
需要带符号表的so才行
回复 点赞
有梦想的胖子 2013年02月06日
有个工具叫 stack ,专门分析这种的。 使用方法也很简单,前提是你要有这个版本的编译环境和symbol即可,如果需要楼主给我留邮箱我发给你。
回复 点赞
充电宝111 2013年02月05日
你都说是一个so动态库了,怎么可能通过一个地址能够得到具体代码的行数呢 动态库每次加载到不同的地址,你这么作是不行的 最简单的做法就是,如果有工作正常的版本,看因为啥改动成了这样 如果不行,只能用gdb之类的调试了吧,不过我没做过
回复 点赞
媒体盒子 2013年02月05日
确定LOG中打印出来用的LIB和你addr2line 中用的符号库是对应关系
回复 点赞
intuition444 2013年02月05日
libsyjt.so 这个库如果是带符号表的, 那用addr2line 就可以定位行号, 你显示 ?? 因为已经把符号表删掉了, 那样库的size会小点。 含符号表的lib, 编译后会放到out/target/product/<Your product name>/symbols/system/lib
回复 点赞
jxtgddlt 2013年02月04日
引用 2 楼 Oo_Oo_ 的回复:
lz,真牛B,SO文件也弄,这样会累死的
额 为啥? 动态链接库 很正常吧?
回复 点赞
Oo_Oo_ 2013年02月04日
lz,真牛B,SO文件也弄,这样会累死的
回复 点赞
发动态
发帖子
Android
创建于2009-10-09

4.6w+

社区成员

9.0w+

社区内容

移动平台 Android
社区公告
暂无公告