介绍
本文将分享一个在IntellJ IDEA下调试JNI的方法,不需要GDB之类的等命令行调试工具,即可直观地进行单步调试。有梯子的同学,请直奔操作视频YouTube。
本文源码:https://github.com/hnyoumfk/helloJni
步骤
0.下载安装JetBrain的C/C++开发工具CLion
注意,在选择调试器时请选择LLDB而非GDB
1.准备好调用JNI方法的Java工程和C/C++源码,分别用IntellJ 和CLion 打开
生成的so(或者dll)动态库时要记得添加debug选项,CLion最好使用管理员权限打开
2.用Debug方式运行Java代码,并准备好断点后开始Debug
3.在终端上输入jps 查看对应的Java进程Id
4.在CLion 中将调试器关联到对应的Java进程,并准备好断点
5.运行
6.在Clion中单步调试
至此已经可以在CLion中单步调试,并且可以查看各个变量的实际值。
Android 相关
关于Android的NDK开发,《使用Android Studio 进行NDK开发和调试》已经讲的非常清楚,虽然本人没有亲自验证。之前在使用Android Studio v1.4的时候进行NDK开发,不能直接导入第三方so库的问题让我着实蛋疼了很久,从官方文档现在看来应该已经是功能完善了很多,虽然不是正式发布的插件。
小结
本文介绍了通过CLion 和IntellJ IDEA 进行JNI调试单步的方法,直观清晰,摆脱普通Java程序员不会使用GDB调试JNI的烦恼。
10.26更新:
本以为从此可以笑傲JNI,结果被内存泄漏和多线程安全打败,调试数天未果。真爱生命,远离JNI(微笑