JNI调试
来源:互联网 发布:星星知多少钻石大陆 编辑:程序博客网 时间:2024/05/21 02:49
在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~
- JNI调试
- JNI调试
- jni调试
- 调试JNI
- JNI打印调试信息
- 调试JNI-堆栈跟踪
- JNI 调试打印信息
- android jni 调试
- JNI 调试信息 LOG
- Android的JNI调试
- jni断点调试
- Android JNI 调试
- android Jni 调试d
- JNI Android Studio 调试
- Jni调试环境搭建
- Android上JNI的调试
- Android上JNI的调试
- Android上JNI的调试
- Ubuntu11.10 下安装 ant
- c语言杂的笔记
- 在计算机领域做研究的一些想法
- POJ 1458题解
- python+ldap实例
- JNI调试
- 推荐Jquery 40个漂亮的导航菜单设计
- 设计模式
- 【二叉树】
- java.text.SimpleDateFormat
- 好久不曾写博客
- Linux proc/%d/stat文件详解
- 13个JavaScript图表图形绘制插件
- ASP.NET(C#) 最简单的弹出层