温馨提示×

Debian如何调试Java代码

小樊
45
2025-12-28 18:17:06
栏目: 编程语言

在 Debian 上调试 Java 的高效方法

一 环境准备

  • 安装 OpenJDK(推荐 OpenJDK 11):
    • 更新索引并安装:sudo apt update && sudo apt install openjdk-11-jdk
    • 验证版本:java -versionjavac -version
  • 可选:配置 JAVA_HOME(便于多版本管理)
    • 写入环境:echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc
    • 使生效:source ~/.bashrc
  • 编译时建议加入调试信息:javac -g HelloWorld.java,便于断点、变量查看与栈追踪。

二 本地命令行调试 jdb

  • 基本流程
    • 编译:javac -g HelloWorld.java
    • 启动:jdb HelloWorld
    • 设置断点:stop at HelloWorld:5(按行)或 stop in com.example.MyClass.myMethod(按方法)
    • 运行与步进:runstep(进入方法)、next(不进入方法)、continue(继续到下个断点)
    • 查看与修改变量:print variableNameset variableName=value
  • 附加到已运行进程
    • 查进程:jps
    • 附加:jdb -attach <PID>,随后可设置断点、查看线程与栈帧
  • 常用命令速览
    • 线程与栈:threadsthread <id>where
    • 继续执行:cont
    • 退出:quit

三 远程调试与 IDE 调试

  • 服务端启动参数(在 Debian 上运行应用)
    • 常用(JPDA 新语法,推荐):java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar app.jar
      • suspend=n:启动即运行;设为 y 则在断点处暂停等待调试器接入
      • address=*:5005:监听所有接口的 5005 端口(云服务器需开放防火墙与安全组)
    • 兼容旧语法(不建议新项目使用):java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 -jar app.jar
  • IntelliJ IDEA 连接步骤
    • 新增配置:Run → Edit Configurations → Remote
    • 设置 Host(服务器 IP)与 Port(如 5005
    • 在代码处设置断点,点击调试按钮连接;支持 Step Over/Into/Out、表达式求值、变量/栈帧查看
  • 适用场景
    • 调试容器、远程服务器、无法本地运行的应用,或需要多人协作联调。

四 常见问题与实用技巧

  • 断点不生效
    • 编译缺少调试信息:使用 javac -g 重新编译
    • 类路径问题:运行时用 -cp 指定正确路径,例如:java -cp bin HelloWorld
  • 无法连接到远程调试端口
    • 检查服务是否监听:ss -lntp | grep 5005netstat -tulpen | grep 5005
    • 云环境需放行 TCP 5005 端口(安全组/防火墙)
  • 生产环境建议
    • 优先使用 suspend=n 避免阻塞启动;必要时临时改为 suspend=y 进行问题定位
  • 辅助工具
    • 日志:增加关键路径日志,便于回放与定位
    • 性能分析:使用 JProfilerYourKit 诊断内存、CPU 与线程瓶颈。

0