首页主机资讯Java Web应用在Ubuntu上如何调试

Java Web应用在Ubuntu上如何调试

时间2025-12-08 21:00:03发布访客分类主机资讯浏览802
导读:在 Ubuntu 上调试 Java Web 应用的标准流程 一 本地开发调试 Tomcat 或嵌入式容器 安装环境:安装 JDK 8/11/17 与 Tomcat 9(或你使用的版本),并准备 Eclipse IDE for Java...

在 Ubuntu 上调试 Java Web 应用的标准流程


一 本地开发调试 Tomcat 或嵌入式容器

  • 安装环境:安装 JDK 8/11/17Tomcat 9(或你使用的版本),并准备 Eclipse IDE for Java EEIntelliJ IDEA
  • 在 IDE 中配置 Server Runtime(指向 Tomcat 安装目录),创建 Dynamic Web Project,将应用部署到服务器。
  • JSP/Servlet/业务代码 中设置断点,使用 Debug As → Debug on Server 启动调试会话,浏览器访问触发断点即可单步、观察变量与表达式。
  • 查看运行日志与问题定位:Tomcat 日志通常位于 /var/log/tomcat9/catalina.out,结合日志与断点能更快定位问题。

二 远程调试 Tomcat 或任意 Java Web 服务

  • 在 Ubuntu 服务器上启用调试参数
    • 方式一(推荐,不改动启动脚本):在 Tomcat 的环境配置中设置 CATALINA_OPTS,例如在 /usr/share/tomcat9/bin/catalina.sh 的合适位置加入(放在其他 JAVA_OPTS 设置之后更稳妥):
      CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
      
      说明:
      • address 使用 5005(可自定义),建议写成 address=*:5005 以监听所有地址,避免仅绑定 127.0.0.1。
      • suspend=n 表示应用启动不等待调试器;如需先挂起等待连接,可改为 suspend=y
    • 方式二(传统参数,兼容旧版本):
      CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
      
    • 重启 Tomcat 生效:
      sudo systemctl restart tomcat9
      
  • 在 IDE 中创建远程调试配置
    • IntelliJ IDEA:Run/Debug Configurations → 选择 Remote JVM Debug,Host 填服务器 IP,Port 填 5005,选择源码模块后点击 Debug
    • Eclipse:Debug Configurations → Remote Java Application,配置 Host/Port(5005),选择项目源码后 Debug
  • 连接与验证
    • 在服务器上确认调试端口已监听:
      ss -lntp | grep 5005
      
    • 本地 IDE 命中断点后,即可像本地调试一样查看变量、堆栈与表达式。

三 命令行与进阶工具

  • 使用 JDB 进行命令行调试(无需图形界面):
    # 连接远程
    jdb -attach <
        服务器IP>
        :5005
    
    # 常用命令
    stop in 全类名.方法名
    cont
    step
    next
    print 变量名
    
  • 进阶排查工具(定位系统层面或本地开发环境问题):
    • strace:跟踪系统调用,分析启动失败、类加载、文件/网络访问等问题。
    • GDB:调试 JVM 或本地 native 库问题(Java 应用一般优先用 JDWP/JDB/IDE)。
    • Valgrind:内存错误检测(多用于 native 代码,Java 应用以 GC/堆分析为主)。

四 常见问题与排查清单

  • 端口与防火墙
    • 确认 8080(HTTP)与 5005(调试)未被占用且已放行:
      sudo ufw allow 8080,5005/tcp
      ss -lntp | egrep ':(8080|5005)'
      
  • 监听地址
    • 远程连接务必使用 address=*:5005 或明确绑定 0.0.0.0,避免仅 127.0.0.1 导致外部无法连接。
  • 版本与兼容性
    • 确保 JDK 版本Tomcat 版本 兼容;JSP 调试依赖容器正确部署与源码匹配。
  • 日志优先
    • 无法命中断点时,先查看 catalina.outlocalhost.< 日期> .log,确认应用已成功部署且无部署/启动异常。
  • 远程代码一致性
    • 远程运行的 class 文件 必须与本地调试源码一致(相同版本/相同构建),否则断点可能不生效或错位。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Java Web应用在Ubuntu上如何调试
本文地址: https://pptw.com/jishu/766330.html
ubuntu hostname设置方法 Ubuntu系统中Java服务如何管理

游客 回复需填写必要信息