Java Web应用在Ubuntu上如何调试
导读:在 Ubuntu 上调试 Java Web 应用的标准流程 一 本地开发调试 Tomcat 或嵌入式容器 安装环境:安装 JDK 8/11/17 与 Tomcat 9(或你使用的版本),并准备 Eclipse IDE for Java...
在 Ubuntu 上调试 Java Web 应用的标准流程
一 本地开发调试 Tomcat 或嵌入式容器
- 安装环境:安装 JDK 8/11/17 与 Tomcat 9(或你使用的版本),并准备 Eclipse IDE for Java EE 或 IntelliJ 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
- 方式一(推荐,不改动启动脚本):在 Tomcat 的环境配置中设置 CATALINA_OPTS,例如在 /usr/share/tomcat9/bin/catalina.sh 的合适位置加入(放在其他 JAVA_OPTS 设置之后更稳妥):
- 在 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)'
- 确认 8080(HTTP)与 5005(调试)未被占用且已放行:
- 监听地址
- 远程连接务必使用 address=*:5005 或明确绑定 0.0.0.0,避免仅 127.0.0.1 导致外部无法连接。
- 版本与兼容性
- 确保 JDK 版本 与 Tomcat 版本 兼容;JSP 调试依赖容器正确部署与源码匹配。
- 日志优先
- 无法命中断点时,先查看 catalina.out 与 localhost.< 日期> .log,确认应用已成功部署且无部署/启动异常。
- 远程代码一致性
- 远程运行的 class 文件 必须与本地调试源码一致(相同版本/相同构建),否则断点可能不生效或错位。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Java Web应用在Ubuntu上如何调试
本文地址: https://pptw.com/jishu/766330.html
