您好,欢迎来到年旅网。
搜索
您的当前位置:首页JNI调试

JNI调试

来源:年旅网

    在Android下使用JNI调用自己实现的so共享库,通过网络链接访问无服务,程序刚启动时就崩溃了,没有任何的提示信息,adb logcat查看运行日志信息:

05-20 21:14:10.288  1382  1520 I ActivityManager: Process com.galen.snappy (pid 6476) has died.
05-20 21:14:10.288  1382  1387 I WindowManager: WIN DEATH: Window{45d9ecb0 com.galen.snappy/com.galen.snappy.Snappy paused=false}
05-20 21:14:10.311  1236  1236 D Zygote  : Process 6476 exited cleanly (1)
05-20 21:14:10.311  1382  1520 I UsageStats: Unexpected resume of org.adwfreak.launcher while already resumed in com.galen.snappy
05-20 21:14:10.389  1382  1382 W InputManagerService: Got RemoteException sending setActive(false) notification to pid 6476 uid 10095

找不到错误原因,使用ndk-gdb进行调试,提示没有提示符号表。

在AndroidManifest.xml中配置调试项:

android:debuggable="true"

在Android.mk中添加编译选项:-g

在ndk中屏蔽对编译符号信息过滤的脚本:

         android-ndk-r5b/build/core/build-binary.mk:#$(hide) $(call cmd-strip, $(PRIVATE_DST))

编译脚本如下:

#!/bin/sh
android update project -p ./
cd jni
ndk-build
cd ..
ant debug
adb uninstall com.galen.snappy
echo uninstall
cd bin
adb install Snappy-debug.apk
echo install


生成可供调试的带有符号表的debug版本。

ndk-gdb进行调试,并开启debug_log最终定位到出错位置,错误信息如下:

05-20 22:27:18.116  7272  7280 E ----android----: connection failed, trying with TLS port
05-20 22:27:18.116  7272  7280 E ----android----: Connect error
05-20 22:27:18.116  7272  7280 E ----android----: Coroutine exit

调试,打印错误信息,最终找到错误原因:

Permission denied

原来是没有网络操作权限啊,墨迹了这么久终于找到。

OK,添加权限在AndroidManifest.xml中:

<uses-permission android:name="android.permission.INTERNET"/>

adb logcat查看debug信息,终于调试通过。

小小错误费如此大功夫,还是对android了解太少。

~End~


因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务