Linux环境下Java程序如何调试
导读:Linux环境下Java程序调试指南 一 环境准备与快速上手 安装并验证 JDK:例如在 Ubuntu 上执行 sudo apt update && sudo apt install default-jdk,随后用 jav...
Linux环境下Java程序调试指南
一 环境准备与快速上手
- 安装并验证 JDK:例如在 Ubuntu 上执行
sudo apt update & & sudo apt install default-jdk,随后用java -version检查版本。 - 准备示例代码(用于演示断点与异常定位):
// HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); int a = 5, b = 0; System.out.println("Result: " + (a / b)); // 触发异常 } } - 编译与运行:使用
javac HelloWorld.java生成 .class 文件;常规运行java HelloWorld验证程序行为。
二 使用 JDB 进行命令行断点调试
- 启动调试器:在代码目录执行
jdb HelloWorld。 - 常用断点与执行控制:
- 设置断点:
stop in HelloWorld.main或stop at HelloWorld:行号 - 开始运行:
run - 单步执行:
step(进入方法)/next(不进入方法) - 继续执行:
cont - 查看源码:
list - 查看变量:
print 变量名 - 查看调用栈:
where
- 设置断点:
- 实战要点:对上面的示例,先在
main设断点,运行后在a / b前观察变量,再单步进入或继续执行以定位 ArithmeticException。
三 远程调试 Linux 上的 Java 进程
- 在服务端启动应用时开启 JDWP 调试参数(示例监听 5005 端口):
参数说明:java \ -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 \ -jar your-application.jartransport=dt_socket使用 Socket 传输;server=y作为调试服务器;suspend=n启动后不挂起等待;address=*:5005监听所有地址的 5005 端口。
- 本地 IntelliJ IDEA 配置 Remote:Run → Edit Configurations → + → Remote,填写 Host(服务器 IP)与 Port(如 5005),点击 Debug 连接。
- 安全与性能提示:调试端口不要暴露在公网,使用 防火墙/安全组 限制来源;调试会带来一定性能开销,避免在高负载生产环境长时间开启。
四 进阶工具与排障建议
- 图形化与运行时诊断:使用 IntelliJ IDEA/Eclipse 进行可视化断点调试;借助 VisualVM 监控 JVM 内存、线程与 CPU,辅助定位 内存泄漏 与性能瓶颈。
- 系统层监控:结合 top/htop 观察进程资源占用,例如
top -p $(pgrep -f your-app)。 - 何时使用 GDB:JVM 自身问题(如 JVM Crash、JIT/Native 代码异常)可在 GDB 中附加到
java进程做低层排查;常规业务逻辑的 Java 代码级 调试优先使用 JDB/IDE。 - 实践建议:优先添加关键路径日志、合理设置断点、控制变量作用域,配合单元测试与远程调试复现线上问题。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux环境下Java程序如何调试
本文地址: https://pptw.com/jishu/750546.html
