addr2line 定位so崩溃位置

时间:2021-02-22 20:43:25

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地址应该 减去 基地址 然后才是真正的地址啊?这个基地址用什么命令可以显示?

10 个解决方案

#1


该回复于2013-02-05 08:40:58被管理员删除

#2


lz,真牛B,SO文件也弄,这样会累死的

#3


引用 2 楼 Oo_Oo_ 的回复:
lz,真牛B,SO文件也弄,这样会累死的

额 为啥? 动态链接库 很正常吧?

#4


你都说是一个so动态库了,怎么可能通过一个地址能够得到具体代码的行数呢
动态库每次加载到不同的地址,你这么作是不行的
最简单的做法就是,如果有工作正常的版本,看因为啥改动成了这样
如果不行,只能用gdb之类的调试了吧,不过我没做过

#5


libsyjt.so 这个库如果是带符号表的, 那用addr2line 就可以定位行号, 你显示 ?? 因为已经把符号表删掉了, 那样库的size会小点。
含符号表的lib, 编译后会放到out/target/product/<Your product name>/symbols/system/lib

#6


确定LOG中打印出来用的LIB和你addr2line 中用的 符号库是对应关系

#7


有个工具叫 stack ,专门分析这种的。
使用方法也很简单,前提是你要有这个版本的编译环境和symbol即可,如果需要楼主给我留邮箱我发给你。

#8


需要带符号表的so才行

#9


关键是如何获取so的基地址的问题, 我也不懂如何获取,  请问楼上的obj/local/armeabi/libsyjt.so这个目录中的so应该是有符号的, 难还要通过什么编译选项打开符号表的生成功能吗?

#10


关于Android JNI 编程如何定位段错误的问题(addr2line的使用):
1.普通的应用程序或者静动态库,如果你想用addr2line 来定位段错误出在哪一行,请记住在编译它们的时候一定加上编译选项 -g 它会生成symbols信息 在你的exe or lib 里面。
2.NDK编译生成静动态库就没有必要在Android.mk的编译选项里面加-g了,应为ndk默认就会生成symbols,这个是我做实验得出来的结论。

#1


该回复于2013-02-05 08:40:58被管理员删除

#2


lz,真牛B,SO文件也弄,这样会累死的

#3


引用 2 楼 Oo_Oo_ 的回复:
lz,真牛B,SO文件也弄,这样会累死的

额 为啥? 动态链接库 很正常吧?

#4


你都说是一个so动态库了,怎么可能通过一个地址能够得到具体代码的行数呢
动态库每次加载到不同的地址,你这么作是不行的
最简单的做法就是,如果有工作正常的版本,看因为啥改动成了这样
如果不行,只能用gdb之类的调试了吧,不过我没做过

#5


libsyjt.so 这个库如果是带符号表的, 那用addr2line 就可以定位行号, 你显示 ?? 因为已经把符号表删掉了, 那样库的size会小点。
含符号表的lib, 编译后会放到out/target/product/<Your product name>/symbols/system/lib

#6


确定LOG中打印出来用的LIB和你addr2line 中用的 符号库是对应关系

#7


有个工具叫 stack ,专门分析这种的。
使用方法也很简单,前提是你要有这个版本的编译环境和symbol即可,如果需要楼主给我留邮箱我发给你。

#8


需要带符号表的so才行

#9


关键是如何获取so的基地址的问题, 我也不懂如何获取,  请问楼上的obj/local/armeabi/libsyjt.so这个目录中的so应该是有符号的, 难还要通过什么编译选项打开符号表的生成功能吗?

#10


关于Android JNI 编程如何定位段错误的问题(addr2line的使用):
1.普通的应用程序或者静动态库,如果你想用addr2line 来定位段错误出在哪一行,请记住在编译它们的时候一定加上编译选项 -g 它会生成symbols信息 在你的exe or lib 里面。
2.NDK编译生成静动态库就没有必要在Android.mk的编译选项里面加-g了,应为ndk默认就会生成symbols,这个是我做实验得出来的结论。