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
#2
lz,真牛B,SO文件也弄,这样会累死的
#3
额 为啥? 动态链接库 很正常吧?
#4
你都说是一个so动态库了,怎么可能通过一个地址能够得到具体代码的行数呢
动态库每次加载到不同的地址,你这么作是不行的
最简单的做法就是,如果有工作正常的版本,看因为啥改动成了这样
如果不行,只能用gdb之类的调试了吧,不过我没做过
动态库每次加载到不同的地址,你这么作是不行的
最简单的做法就是,如果有工作正常的版本,看因为啥改动成了这样
如果不行,只能用gdb之类的调试了吧,不过我没做过
#5
libsyjt.so 这个库如果是带符号表的, 那用addr2line 就可以定位行号, 你显示 ?? 因为已经把符号表删掉了, 那样库的size会小点。
含符号表的lib, 编译后会放到out/target/product/<Your product name>/symbols/system/lib
含符号表的lib, 编译后会放到out/target/product/<Your product name>/symbols/system/lib
#6
确定LOG中打印出来用的LIB和你addr2line 中用的
符号库是对应关系
#7
有个工具叫 stack ,专门分析这种的。
使用方法也很简单,前提是你要有这个版本的编译环境和symbol即可,如果需要楼主给我留邮箱我发给你。
使用方法也很简单,前提是你要有这个版本的编译环境和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.普通的应用程序或者静动态库,如果你想用addr2line 来定位段错误出在哪一行,请记住在编译它们的时候一定加上编译选项 -g 它会生成symbols信息 在你的exe or lib 里面。
2.NDK编译生成静动态库就没有必要在Android.mk的编译选项里面加-g了,应为ndk默认就会生成symbols,这个是我做实验得出来的结论。
#1
#2
lz,真牛B,SO文件也弄,这样会累死的
#3
额 为啥? 动态链接库 很正常吧?
#4
你都说是一个so动态库了,怎么可能通过一个地址能够得到具体代码的行数呢
动态库每次加载到不同的地址,你这么作是不行的
最简单的做法就是,如果有工作正常的版本,看因为啥改动成了这样
如果不行,只能用gdb之类的调试了吧,不过我没做过
动态库每次加载到不同的地址,你这么作是不行的
最简单的做法就是,如果有工作正常的版本,看因为啥改动成了这样
如果不行,只能用gdb之类的调试了吧,不过我没做过
#5
libsyjt.so 这个库如果是带符号表的, 那用addr2line 就可以定位行号, 你显示 ?? 因为已经把符号表删掉了, 那样库的size会小点。
含符号表的lib, 编译后会放到out/target/product/<Your product name>/symbols/system/lib
含符号表的lib, 编译后会放到out/target/product/<Your product name>/symbols/system/lib
#6
确定LOG中打印出来用的LIB和你addr2line 中用的
符号库是对应关系
#7
有个工具叫 stack ,专门分析这种的。
使用方法也很简单,前提是你要有这个版本的编译环境和symbol即可,如果需要楼主给我留邮箱我发给你。
使用方法也很简单,前提是你要有这个版本的编译环境和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.普通的应用程序或者静动态库,如果你想用addr2line 来定位段错误出在哪一行,请记住在编译它们的时候一定加上编译选项 -g 它会生成symbols信息 在你的exe or lib 里面。
2.NDK编译生成静动态库就没有必要在Android.mk的编译选项里面加-g了,应为ndk默认就会生成symbols,这个是我做实验得出来的结论。