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