开头说两句
Java 基础 Demo 站: https://www.javastudy.cloud
Java 中高级开发博客: https://www.lixiang.red
Java 学习公众号: Java 技术大本营
导入源码到 CLION
打开 CLION -> New CMake Project from Sources
然后选择 JDK 源码目录,然后按默认勾选,点 OK,如下图所示:
调整 CMakeList.txt
如果直接按默认的 CMakeList.txt 来, 会发现任意打开一个代码, 都是全面飘红。
保留下来的 CMakeList.txt 主要有两部分:
一。include_directories
这个是为了构建代码索引, 在 Clion 中看起来不是全面飘红
二。add_executable
这个是为了能在 Clion 中创建执行程序, 可以直接执行我们的 Java 程序
然后原有的 test 目录都删除掉
完整的 CMakeList.txt 因为大长,就不复制,可前进 GitHub 查看:
https://github.com/xiaodaojava/openjkd11-CmakeList
开始调试
在右上角,和 idea 一样的位置,创建一个 Cmake Application
然后我们把断点打到 jdk11/src/java.base/share/native/libjli/java.c
394 行
如下图所示:
然后点击 debug 运行:
可以看到进入断点,并且在 Debug 面板可以看到我们传入的 -version
参数
在调试过程中,会遇到 error: No current target; cannot handle signals until you have a valid target and process.
这个错, 先不管, 直接继续运行
最终会在控制台看到如下输出:
LLDB 的 Signal: SIGSEGV (signal SIGSEGV)
解决上面出现的 LLDB 异常暂停的错误,需要我们在入口断点处也就是进入到 394 行时就输入如下命令
process handle --pass true --stop false SIGSEGV
process handle --pass true --stop false SIGBUS
如下图所示:
然后放过断点继续运行,可以看到, 这次程序没有意外暂停, 而且在控制台输出
总结
开始的调试并不麻烦,也只传了一个 -version
参数做测试。 后面我们要编写 Java 程序, 并且观察虚拟机是如何执行我们的 Java 代码,大家一起加油!
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于