JNI调用出现XXX遇到问题已退出解决方法

来源:互联网 发布:如何利用淘宝套现 编辑:程序博客网 时间:2024/05/18 01:09

    在JNI调用中经常会遇到异常导致APK闪退的现象,而这种问题通常很难定位,要定位这种问题,需要:

1:首先在logcat中加入debug(方法如图所示):


2:在运行后报错中会在debug中找到类似这样的一串错误



看到这个长长的错误,不要慌,我们就要拿着这个错误去分析:
首先,从这个长长的串中找到有用的信息
10-28 12:39:17.779: I/DEBUG(7749): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
10-28 12:39:17.779: I/DEBUG(7749):  r0 00000027  r1 deadbaad  r2 a0000000  r3 00000000
10-28 12:39:17.779: I/DEBUG(7749):  r4 00000001  r5 00000000  r6 44bc8c10  r7 44984e64
10-28 12:39:17.779: I/DEBUG(7749):  r8 44bc8b70  r9 44984e54  10 44984e3c  fp 800a5368
10-28 12:39:17.779: I/DEBUG(7749):  ip afd46668  sp 44bc8ae0  lr afd191d9  pc afd15ca4  cpsr 60000030
10-28 12:39:17.779: I/DEBUG(7749):  d0  646f423262287964  d1  6f42796f72747365
10-28 12:39:17.779: I/DEBUG(7749):  d2  646e412f65737062  d3  6850656e69676e32
10-28 12:39:17.779: I/DEBUG(7749):  d4  786f427363697379  d5  736e657478454432
10-28 12:39:17.779: I/DEBUG(7749):  d6  2f696e6a2f6e6f69  d7  79442f4432786f42
10-28 12:39:17.779: I/DEBUG(7749):  d8  42ce94f34e6e6b28  d9  3c8888893c888888
10-28 12:39:17.779: I/DEBUG(7749):  d10 c26f7c303f800000  d11 3fed9bafc26f7e0e
10-28 12:39:17.779: I/DEBUG(7749):  d12 0000000000000000  d13 0000000000000000
10-28 12:39:17.779: I/DEBUG(7749):  d14 0000000000000000  d15 0000000000000000
10-28 12:39:17.779: I/DEBUG(7749):  d16 3ef18d523ae9735c  d17 3fca68bfcfa2d635
10-28 12:39:17.779: I/DEBUG(7749):  d18 bf29fd09783e4216  d19 3ec6cd878c3b46a7
10-28 12:39:17.779: I/DEBUG(7749):  d20 3f826164f3f641b5  d21 3f5e8ec8e86d933e
10-28 12:39:17.779: I/DEBUG(7749):  d22 3e3782e7e0000000  d23 3e33401660000000
10-28 12:39:17.779: I/DEBUG(7749):  d24 3fca99a880000000  d25 bfca99a880000000
10-28 12:39:17.779: I/DEBUG(7749):  d26 be3ff77520000000  d27 3ef99342e0ee5069
10-28 12:39:17.779: I/DEBUG(7749):  d28 bfa2b4442c6a6c2f  d29 0000000000000000
10-28 12:39:17.779: I/DEBUG(7749):  d30 0000000000000000  d31 0000000000000000
10-28 12:39:17.779: I/DEBUG(7749):  scr 80000012
10-28 12:39:17.829: I/DEBUG(7749):          #00  pc 00015ca4  /system/lib/libc.so
10-28 12:39:17.829: I/DEBUG(7749):          #01  pc 0001c92c  /system/lib/libc


3.用addr2line命令找到地址对应的程序位置,动态库为libmultiplayerservice.so

arm-eabi-addr2line 000078e6 -e libmultiplayerservice.so
结果:,显示出对应的程序文件和行数,如果不是debug版本,可能有一两行偏差


阅读全文
0 0
原创粉丝点击