配置openjdk调试环境

先决条件

首先在Ubuntu 18.04上编译SlowDebug版本的openjdk。注意,这里我选择的是x86处理器的电脑。苹果M系列属于ARM芯片,指令集不一样。由于我在苹果上进行垃圾回收调试的时候会报SIGILL错误。为了了解JVM的内部工作原理,不要在这种问题上过多纠结,另外,x86的资源也更丰富一些,因此,我直接选择x86处理器进行调试。

我机器的处理器为AMD Ryzen 7 8845HS w/ Radeon 780M Graphics 3.80 GHz

为了减少寻找在何处调试的时间,这里告诉大家,直接定位到

openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin

这里面就是JVM虚拟机可执行文件的入口。例如,平时大家执行的

java -version

就是调用这里的java可执行文件。如果你进入该文件夹,并执行当前文件夹下的

./java -version

能够正确显示版本号,则证明编译成功了。

工具选择

如果使用gcc和g++编译的openjdk,那么就选择gdb进行调试。前面已经说了,目标jdk是openjdk11,操作系统为Ubuntu 18.04,这里直接用apt install安装gdb即可进行调试。

为什么选用gdb而不是图形界面调试

为此问题我花了1个月,一直尝试看能否用IDE的调试工具进行调试,然

### OpenJDK 环境配置教程 #### 安装 OpenJDK 在基于 Debian 的 Linux 发行版上,可以使用 `apt` 命令来安装默认版本的 OpenJDK。运行以下命令完成安装: ```bash sudo apt update sudo apt install default-jdk ``` 上述命令会自动下载并安装最新稳定版本的 OpenJDK 及其开发工具包[^1]。 如果需要指定特定版本(如 JDK 11),可以通过以下命令实现: ```bash sudo apt install openjdk-11-jdk ``` #### 验证安装 安装完成后,验证 Java 是否成功安装以及当前使用的版本号: ```bash java -version javac -version ``` 这两个命令分别用于查看 Java 运行时环境 (JRE) 和编译器 (JAVAC) 的版本信息。正常情况下,输出应显示已安装的 OpenJDK 版本号。 #### 设置 JAVA_HOME 环境变量 许多应用程序依赖于 `JAVA_HOME` 环境变量指向正确的 JDK 路径。编辑系统的 shell 配置文件(如 `.bashrc` 或 `/etc/profile`),添加如下内容: ```bash export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin ``` 保存更改后执行以下命令使设置生效: ```bash source ~/.bashrc ``` 通过打印 `$JAVA_HOME` 来确认路径是否正确: ```bash echo $JAVA_HOME ``` #### 处理迁移问题 对于从 Oracle JDK 8 到 OpenJDK 11 的迁移过程中可能遇到的问题,需注意部分参数已被废弃或替换。例如 `-d64`, `PrintGCTimeStamps`, `UseGCLogFileRotation`, `NumberOfGCLogFiles`, `GCLogFileSize` 等选项不再被支持。建议查阅官方文档了解替代方案[^3]。 #### 快捷启动 Arthas 工具 为了方便调试 Java 应用程序,可创建一个简单的 Shell 脚本来快速启动 Alibaba 开源诊断工具 Arthas。具体操作方法见下述脚本实例[^4]: ```bash #!/bin/bash java -jar /path/to/your/arthas-boot.jar ``` 将此代码存入名为 `as.sh` 文件中,并赋予执行权限: ```bash chmod +x as.sh ``` ### 总结 以上介绍了如何在 Linux 平台上配置 OpenJDK 环境,包括但不限于安装过程、环境变量设定及常见兼容性注意事项等内容。希望这些指导能够帮助顺利完成相关工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值