最近为了性能需求,开始搞JNI,白手起搞真心不容易。中间差点崩溃了好几次,最终总算得到一点心得。
JNI对性能的提升没有我预想中的大,对于for循环的速度提升大概在1倍左右,所以如果数量级不大的话,性能提升不会很明显
JNI编完之后,不能调试,是不是很蛋疼,不像android Java可以看出错信息。JNI crash之后,界面上表示为没有任何反应,过段时间直接退出应用,没有提示、也没有XXX已停止运行。第一次遇到真是无从下手,有没有!!!,经过对Java层的log研究发现,原来JNI crash后,cpu就直接死在那里(相当于assert,程序停止运行)。果断时间后JAVA层发现程序已挂之后(进程僵死),就强制杀死该进程。于是程序直接退出而无提示。(以上分析纯属个人分析,如有不对,敬请指正)。这时发现如果能有单步调试功能那该多好!!
百度一下 ndk单步调式 一般能搜出如下结果:
1、安装CDT插件
2、安装Sequoyah插件
3、使用插件装入JNI文件、导入JNI头文件
4、配置eclipse JNI编译环境
5、修改ndk-gdb脚本
6、运行ndk-gdb脚本,并修改生成的文件(windows需安装cygwin)
7、配置eclipse native调试环境
吓尿了,有没有!!!单步调试这么麻烦!!!麻烦不说,windows下使用ndk-gdb效率还特别低
另外,对于修改google release的ndk脚本,我一直持保留态度,安说release的脚本应该直接能用的,为什么要做修改后才能用呢?
以上步骤,我花了2~3小时搞定,仅仅为了能打个断点~~~
在机缘巧合下,我看到一篇google官方的文章“Using NDK Plugins”
令人兴奋的是,ADTr20已经支持JNI单步调试,再也不需要如上这么麻烦的步骤了
你现在需要做的只需以下2步:
1、使用ndk-build编译时,加上如下参数NDK_DEBUG=1,之后生成so文件之外,还会生成gdbobserver,gdb.setup调式文件
2、在项目的Debug Configuration中选择Android Native Apllication,点击下方Debug
3、Enjoy your Debugging!
如何?是不是超简单,而且调试速度还相当快哦
ADTr20已经比较完美支持NDK开发了。可以集成ndk编译,只需在项目右键Add Native Support,就能自动生成jni文件,并部署编译环境(注意这个过程是不可逆的,手动删除jni文件后,会编译不过)。如果需要生成NDK调试文件,需要右键项目->properties->C/C++ build->Builder Setting 把默认的Build Command : ndk-build 修改成 ndk-build NDK_DEBUG=1
最后推荐一个很有用的android官方网站
http://tools.android.com/这个网站包含大多数ADT使用方法和新版ADT的介绍,获益匪浅
关于如何使用ADT进行ndk单步调式就在
http://tools.android.com/recent/usingthendkplugin
只可惜这种方法只能在ndk环境下使用,如果要对framework中的jni进行单步调试,应该就行不通了,推荐的一种方法是把它在NDK中编译调试完毕,然后将生成的so放在system/lib下
android职业交流QQ 群,有兴趣的可以一起来多搞搞技术、职业交流,互相学习、提高,互通好的职业信息,群号:104286694
分享到:
相关推荐
详细介绍oracle存储过程单步调试的方法。学会了存储过程的调试方法,对于Oracle函数的调试也大同小异。
该文档详细描述了在嵌入式linux系统中,单步调试软件程序的方法。单步调试软件程序,能有效解决难以定位的疑难问题。嵌入式linux系统因为其特殊性,单步调试软件程序存在很大困难。
格式 flv 详细演示了单步调试的过程 希望对用codeblocks的初学者提供帮助
VxWorks单步调试环境的搭建
CodeBlocks单步调试入门
单步调试不成功,需要采取哪些方法,这些方法可以一试
vc++6.0 单步调试的详细介绍,并配合以具体的例子,一学就会
DevC++单步调试的设置方法 DevC++单步调试的设置方法
Eclipse的单步调试说明文档,使用eclipse
Lua 调试 编辑器 单步 Lua 调试 编辑器 单步 Lua 调试 编辑器 单步
单步调试功能是调试系统的重要功能之一,使用户能以源代码行为单位对程序进行控制。由于C语言一行源代码可能包含很多复杂的语句,一个成功的C语言级单步调试功能实现需要解决一系列问题。
网上大多数的使用vs2005编译sqlite是编译成为dll 我的目的是为了分析sqlite 所以还是编译成一个可执行程序方便单步调试 1 创建一个空的Win32 Console Application工程 2 sqlite3 6 23的所有源码均加入工程 除去以下...
AspStudioASPdaimabenditiaoshigongju.exe 是一个ASP单步调试工具 比IIS好多了,能够单步调试,比interdev好多了,内置服务器。小而全。方便实用
本文档是自己一边实际操作一边记录完成,每一关键步骤都有截图与详细...方法2的缺点是首次配置复杂,优点是不必每次调试都重新在目标机安装app,并可以在目标程序运行过程中随时开始调试。文档完成时间是2014年10月。
AXD+JLINK在SDRAM中单步调试UBOOT的方法说明
单步调试.exe
支持Lua进行单步调试,提供简单IDE功能。。。。。。
【解决方法】 【1】在“Tool” -> "compiler Options" ->"compiler" ->"Add following commands when calling compiler" 下面的编辑框里 加上:-g3,并勾选Add following commands when calling compiler 前面的方框...
1. ffmpeg-0.6.3_modify.7z 是修改后的ffmepg的代码; 2.ffmpeg-0.6.3_srouce.tar.bz2 是ffmpeg原始代码; 3.SDL-devel-1.2.15-VC.zip 是图像显示使用使用的sdl代码; 4.w_cc_p_10.1.020.exe 是vc 2005 需要使用...