Code Bye

android调用JNI报Fatal signal 11 (SIGSEGV) at XX

RT,安卓在调用底层JNI的C代码的时候出现的问题,反复的调用久了就会出现这样的问题,但是我看C代码又看不出来什么问题,报了这样错误以后,用C写的代码还有打印信息,都不好定位错误在哪一行,参考这位高人的文章http://zzhhui.blog.sohu.com/266543920.html,其中有很多的困惑,请大家指点一点,平时都是怎么调试JNI的,要是能根据提示的地址XXXXX跟SO文件能定位到所出问题的函数或者代码行就好了,这位前辈的文章中有说到用addr2line 命令,我有试过用这个命令,再加上我的SO文件所在的目录,但是在NDK中执行了之后没有得到出错代码行的信息

解决方案:95分
LOG中并没有看到挂掉的堆栈信息啊 一般像这种
04-15 11:06:53.859 F/libc    ( 2398): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1)

04-15 11:06:53.869 I/DEBUG   ( 1274): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***

04-15 11:06:53.869 I/DEBUG   ( 1274): Build fingerprint: ""Xiaomi/mione_plus/mione_plus:4.0.4/IMM76D/ICS24.0:user/release-keys""

04-15 11:06:53.869 I/DEBUG   ( 1274): pid: 2398, tid: 2555  >>> org.linphone <<<

04-15 11:06:53.869 I/DEBUG   ( 1274): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  r0 00fad7d0  r1 00000000  r2 000000a0  r3 00000050

04-15 11:06:53.869 I/DEBUG   ( 1274):  r4 00fbf180  r5 00000000  r6 5cfd59a0  r7 00000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  r8 5cfd5820  r9 5cfd5814  10 5cfd58a0  fp 5cfd5818

04-15 11:06:53.869 I/DEBUG   ( 1274):  ip 00000001  sp 5cfd5804  lr 5c8546e4  pc 40050cc8  cpsr 80000010

04-15 11:06:53.869 I/DEBUG   ( 1274):  d0  0000000000000000  d1  0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d2  0000000000000000  d3  0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d4  0000000000000000  d5  0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d6  0000000000000000  d7  0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d8  400d9aa353e247de  d9  401c3fb69984a0e5

04-15 11:06:53.869 I/DEBUG   ( 1274):  d10 412e848000000000  d11 408f400000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d12 3feccccccccccccd  d13 4059000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d14 3fb9999999999998  d15 0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d16 0000000000000000  d17 0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d18 0000000000000000  d19 0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d20 0000000000000000  d21 0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d22 0000000000000000  d23 0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d24 0000000000000000  d25 0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d26 0000000000000000  d27 0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d28 0000000000000000  d29 0000000000000000

04-15 11:06:53.869 I/DEBUG   ( 1274):  d30 ffffffffffffffff  d31 ffffffffffffffff

04-15 11:06:53.869 I/DEBUG   ( 1274):  scr 60000012

里面应该有挂掉的堆栈,然后栈顶就是最后挂掉的地方,还有用addr2line 必须是符号库文件,也就是obj目录下的,而不是libs目录

解决方案:5分

window->show views->logcat


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android调用JNI报Fatal signal 11 (SIGSEGV) at XX