设为首页 加入收藏

TOP

打开Android系统中的JNI调试
2014-11-24 08:37:07 来源: 作者: 【 】 浏览:0
Tags:打开 Android 系统 JNI 调试

VM启动时需要一些启动参数,包含标准参数和非标准参数。这里涉及到两个标准参数:-Xcheck:jni和-verbose:jni。


这两个参数都设置的话,JNI调用路径就可以由dalvikvm打印出来,并通过logcat看到。


可以在下面这个文件中控制是否为VM添加这两个启动参数。


先看一下第一个代码片段


property_get("dalvik.vm.checkjni", propBuf, "");


if (strcmp(propBuf, "true") == 0) {


checkJni = true;


} else if (strcmp(propBuf, "false") != 0) {


/* property is neither true nor false; fall back on kernel parameter */


property_get("ro.kernel.android.checkjni", propBuf, "");


if (propBuf[0] == '1') {


checkJni = true;


}


}


"dalvik.vm.checkjni"和ro.kernel.android.checkjni这两个系统属性控制着变量checkJni,而checkJni这个变量的意义在于:


if (checkJni) {


/* extended JNI checking */


opt.optionString = "-Xcheck:jni";


mOptions.add(opt);


... ...


/* with -Xcheck:jni, this provides a JNI function call trace */


opt.optionString = "-verbose:jni";


mOptions.add(opt);


}


可以看出,可以checkJni为true,-Xcheck:jni和-verbose:jni这两个VM启动参数就会被用作启动VM。默认状态下,添加-verbose:jni这个参数的两行代码是被注释掉的,如果需要调试的问题和JNI有关,可以把注释打开。


可惜的是,一旦JNI调试被打开,会打印大量的垃圾信息,所以得慎用。我还在继续寻找有没有更高效的方法。


关于VM的启动参数参考下面这两篇文章


Java启动参数


java -verbose命令


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Webkit如何绑定JS引擎 下一篇在Android源码的JavaScriptCore引..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·怎样用 Python 写一 (2025-12-27 02:49:19)
·如何学习python数据 (2025-12-27 02:49:16)
·想要自学数据分析, (2025-12-27 02:49:14)
·Java 集合框架 - 菜 (2025-12-27 02:19:36)
·Java集合框架最全详 (2025-12-27 02:19:33)