java jni调试_Jni 调试 : eclipse + Vs 联合调试

1.在Eclipse 中,Java 类中链接库引用到vs的debug目录下

例如:System.load("W:\\vsworkplace\\Jnidemo\\x64\\Debug\\JniDemo.dll");

2.在VS项目中设置工程属性

项目属性页->配置属性->调试

修改命令:指向jdk的bin/java.exe

修改命令参数:指向java工程生成的class文件(带上-cp 前缀),例如:-cp W:\eclipseWork\J2EE\JniDemo\bin com.bk.jnidemo.JniDemo

修改工作目录:指向java工程根目录

2b44c0ecfac6d26aa4eb528f20fbf054.png

3.断点联合调试

(1)eclipse断点:在调用Jni本地方法语句前打断点,启动debug调试。

(2)在vs jni相应方法中打断点,点击工具栏 调试->附加到进程,选择 javaw.exe 进程

b096c64201223c996fc6479b6f11d603.png

(3)回到eclipse调试界面,按F6调试下一步,就可以从java代码一直debug到C/C++代码中了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码解释: public class ModemDebugDumpCollect { private static String TAG = "XiaomiModemDumpCollect"; private static boolean mJNILoaded = false; private static final String DEVICE_TYPE_DEVICES = "munch,psyche,alioth,aliothin,thyme,cmi,umi,cas"; private static final String PROP_SWITCH_SSR_MONITOR = "persist.vendor.radio.ssr_monitor"; private static final String PROP_SWITCH_SSR_MONITOR_ON = "1"; private static final String PROP_SWITCH_SSR_MONITOR_OFF = "0"; private static OemHookAgent mMtbHookAgent = null; public ModemDebugDumpCollect() { if(mJNILoaded == false) { try { loadDiag(); mJNILoaded = true; } catch (final UnsatisfiedLinkError err) { Log.d(TAG, "JNI_load failed, UnsatisfiedLinkError: " + err.toString()); } catch (Exception e) { Log.d(TAG, "JNI_load failed, Exception:" + e.toString()); } } } private void loadDiag() { mMtbHookAgent = OemHookAgent.getHook(); Log.d(TAG, "mMtbHookAgent: " + mMtbHookAgent); if (null != mMtbHookAgent && PROP_SWITCH_SSR_MONITOR_ON.equals(mMtbHookAgent.onHookPropGetSync(PROP_SWITCH_SSR_MONITOR, PROP_SWITCH_SSR_MONITOR_OFF))) { System.loadLibrary("xiaomi_modemdump_rild_jni"); Log.d(TAG, "load xiaomi_modemdump_rild_jni success"); return; } String deviceName = SystemProperties.get("ro.product.vendor.device", ""); if(0 != deviceName.length() && DEVICE_TYPE_DEVICES.contains(deviceName)) { System.loadLibrary("xiaomi_modemdumpsdx55_jni"); Log.d(TAG, "load xiaomi_modemdumpsdx55_jni success"); } else { System.loadLibrary("xiaomi_modemdump_jni"); Log.d(TAG, "load xiaomi_modemdump_jni success"); } } public int modemDumpCollectStart() { try { if (false == mJNILoaded) { Log.d(TAG, "JNI_load failed, will not do JNI_start proc"); return 0; } return start(); } catch (final UnsatisfiedLinkError err) { Log.d(TAG, "JNI_start failed, UnsatisfiedLinkError: " + err.toString()); } catch (Exception e) { Log.d(TAG, "JNI_start failed, Exception: " + e.toString()); } return 0; } private static native int start(); }
最新发布
06-07

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值