温馨提示×

如何调试Ubuntu Tomcat应用

小樊
37
2025-11-22 07:50:22
栏目: 智能运维

Ubuntu 上调试 Tomcat 应用的实用流程

一 准备与快速自检

  • 确认环境:安装 JDKTomcat,确保能正常启动与访问。示例:sudo apt-get install openjdk-8-jdk tomcat9;启动后用浏览器访问 http://localhost:8080 验证。部署应用可将 WAR 放入 webapps 目录,Tomcat 会自动解压部署。以上步骤适用于常见的 Ubuntu + Tomcat 开发与测试环境。
  • 定位日志:Tomcat 日志通常在 /var/log/tomcat9/(apt 安装)或 $CATALINA_HOME/logs(手动安装)。关键文件包括:catalina.out(控制台与应用的输出)、localhost.YYYY-MM-DD.log(应用初始化未处理异常)、localhost_access_log.YYYY-MM-DD.txt(访问日志)。先用 tail -f 实时观察问题:tail -f /var/log/tomcat9/catalina.out。

二 远程调试 Tomcat(JPDA 方式,IDE 附加)

  • 开启调试端口:
    • 推荐方式:在 $CATALINA_HOME/bin/catalina.sh 中设置环境变量(或直接在启动命令前导出),例如:export CATALINA_OPTS=“-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005”;随后用 catalina.sh run 启动(前台运行便于观察)。默认端口通常为 8000,如被占用可改为 5005 等未被占用的端口。
    • 系统服务方式(apt 安装版常见):编辑 /etc/init.d/tomcat9,将 catalina_sh start 改为 catalina_sh jpda start;如需修改监听地址/端口,可调整 JPDA_ADDRESS(如改为 0.0.0.0:5005 以允许远程主机连接,注意安全)。修改后重启服务:sudo systemctl restart tomcat9。
  • IDE 附加(Eclipse/IntelliJ IDEA):
    • 新建调试配置,类型选择 Remote Java Application;Host 填 服务器IP,Port 填 5005(与上面 address 一致)。
    • 选择源码工程,设置断点后点击 Debug 开始附加;触发请求即可命中断点、查看变量与调用栈。
  • 连通性检查:在调试机执行 telnet 或 nc 测试端口连通(如 telnet your_server_ip 5005),确保防火墙/安全组已放行该端口。

三 日志定位与问题排查

  • 常用命令:实时查看 tail -f catalina.out;检索关键字 grep “error” catalina.out;查看首尾内容 head/tail;统计与过滤可用 awk/sed。这些命令能快速聚焦异常栈、启动失败原因与访问异常。
  • 日志含义与配置:
    • catalina.out:综合输出,包含 Tomcat 自身与应用的 System.out/err 与日志框架输出。
    • localhost.YYYY-MM-DD.log:记录应用上下文初始化失败、未捕获异常等。
    • localhost_access_log.YYYY-MM-DD.txt:标准 访问日志(时间、资源、状态码等),用于分析 4xx/5xx 与性能瓶颈。
    • 日志级别:在 conf/logging.properties 中调整,如将 org.apache.catalina.level 设为 FINE 可获得更详细输出(仅在排障时临时使用,避免性能与磁盘压力)。

四 常见问题与排查要点

  • 端口冲突:若 8000/5005 被占用,修改 JPDA_ADDRESSCATALINA_OPTS 中的 address 为可用端口,并同步更新 IDE 的调试端口。
  • 无法附加:确认 Tomcat 是以 jpda/调试参数 启动、端口已放行、IDE 的 Host/Port 配置正确,且本机与服务器时间差异不大(避免 SSL/调试握手异常)。
  • 断点不生效:确保部署的 WAR 与本地源码版本一致(依赖、类路径、构建产物一致);检查 IDE 是否选中了正确的项目与模块;确认没有启用“跳过所有断点”。

0