首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
Java Web应用在Ubuntu上如何调试

Java Web应用在Ubuntu上如何调试

热心网友
84
转载
2026-04-28

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

Ja va Web应用在Ubuntu上如何调试

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

调试Ja va Web应用,尤其是在生产或准生产环境中,是开发者必须掌握的技能。下面这份流程,涵盖了从本地开发到远程诊断的完整路径,帮你系统化地解决问题。

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

一切从本地开始。在Ubuntu桌面环境下搭建一个可调试的开发环境,是最高效的起点。

  • 安装环境:首先,安装指定版本的JDK(8、11或17)和Tomcat 9(或其他对应版本)。开发工具方面,Eclipse IDE for Ja va EE 或 IntelliJ IDEA 任选其一即可。
  • IDE配置与部署:在IDE中配置Server Runtime,将其指向Tomcat的安装目录。接着,创建一个Dynamic Web Project,并将你的应用部署到这台本地服务器上。
  • 启动调试会话:接下来,在关键的JSP页面、Servlet或业务逻辑代码中设置断点。通过“Debug As → Debug on Server”启动调试,然后在浏览器中访问对应页面来触发断点。一旦命中,你就可以自如地进行单步跟踪、观察变量和计算表达式了。
  • 查看运行日志与问题定位:别忘了日志这个好帮手。Tomcat的日志通常位于 /var/log/tomcat9/catalina.out。将断点调试信息与日志中的错误记录结合起来分析,往往能更快地锁定问题根源。

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

当问题出现在远程服务器上时,远程调试就成了“救火队长”。其核心是让JVM开启调试端口,允许IDE通过网络连接进来。

  • 在 Ubuntu 服务器上启用调试参数
    • 方式一(推荐,不改动启动脚本):在Tomcat的环境变量CATALINA_OPTS中设置。例如,在/usr/share/tomcat9/bin/catalina.sh文件中,找一个合适的位置(通常放在其他JA VA_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,让JVM启动后暂停,直到调试器接入。
    • 方式二(传统参数,兼容旧版本)
      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”。填写服务器IP地址和端口(如5005),选择对应的源码模块,然后点击Debug按钮即可连接。
    • Eclipse:在“Debug Configurations”中创建“Remote Ja va Application”配置。同样填入Host(服务器IP)和Port(5005),并关联本地项目源码,随后启动Debug。
  • 连接与验证
    • 连接前,可以在服务器上确认调试端口是否已成功监听:
      ss -lntp | grep 5005
    • 当本地IDE成功连接并命中断点后,你会发现,其调试体验——查看变量、调用堆栈、计算表达式——与本地调试几乎毫无二致。

三 命令行与进阶工具

并非所有环境都允许使用图形化IDE。掌握命令行工具和系统级诊断方法,能让你在更复杂的情况下游刃有余。

  • 使用 JDB 进行命令行调试(无需图形界面):对于无GUI的服务器或喜欢命令行的开发者,JDB是标准选择。
    # 连接远程调试端口
    jdb -attach <服务器IP>:5005
    
    # 常用命令示例
    stop in com.example.MyServlet.doGet  # 在方法处设置断点
    cont                                 # 继续执行
    step                                 # 单步步入
    next                                 # 单步步过
    print myVariable                     # 打印变量值
  • 进阶排查工具(定位系统层面或本地开发环境问题):有些问题超出了Ja va层面,需要更底层的工具。
    • strace:跟踪进程的系统调用,非常适合分析应用启动失败、类加载异常、或文件/网络访问等底层问题。
    • GDB:主要用于调试JVM本身或应用调用的本地原生(Native)库。对于纯Ja va应用,优先使用JDWP/JDB或IDE。
    • Valgrind:强大的内存错误检测工具,多用于C/C++等原生代码。Ja va应用的内存问题,通常优先依靠GC日志和堆转储(Heap Dump)分析。

四 常见问题与排查清单

调试过程不会总是一帆风顺。遇到连接失败或断点不生效时,可以按照下面这个清单逐一核对。

  • 端口与防火墙
    • 确认服务器的8080(应用端口)和5005(调试端口)既没有被其他进程占用,也未被防火墙阻拦:
      sudo ufw allow 8080,5005/tcp
      ss -lntp | egrep ':(8080|5005)'
  • 监听地址
    • 这是远程连接失败的常见原因。务必确保调试参数中的地址设置为 address=*:5005address=0.0.0.0:5005,如果只绑定了127.0.0.1,外部机器自然无法连接。
  • 版本与兼容性
    • 检查JDK版本与Tomcat版本是否兼容。另外,调试JSP时,需要确保容器正确部署了JSP文件,且与源码匹配。
  • 日志优先
    • 如果断点始终无法命中,别急着怀疑调试配置。首先去查看 catalina.outlocalhost.<日期>.log 等日志文件,确认应用本身是否已成功部署且没有抛出任何启动异常。
  • 远程代码一致性
    • 这是最关键的陷阱之一:远程服务器上运行的class文件,必须与本地IDE中打开的源代码版本完全一致(来自同一次构建)。否则,断点位置会错乱,导致调试行为异常或完全失效。
来源:https://www.yisu.com/ask/88721009.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Ubuntu系统Java资源占用过高怎么优化
编程语言
Ubuntu系统Java资源占用过高怎么优化

Ubuntu下Ja va资源占用过高的定位与优化 一、先厘清“高占用”的来源 遇到资源占用高,第一步千万别慌。很多朋友一看到top命令里VIRT(虚拟内存)的数字就紧张,其实这里有个关键点需要区分:Ja va进程的-Xmx参数只限制了堆内存,而进程的总内存占用(RES,常驻物理内存)通常会大于堆。多

热心网友
04.28
Java Web应用在Ubuntu上如何调试
编程语言
Java Web应用在Ubuntu上如何调试

在 Ubuntu 上调试 Ja va Web 应用的标准流程 调试Ja va Web应用,尤其是在生产或准生产环境中,是开发者必须掌握的技能。下面这份流程,涵盖了从本地开发到远程诊断的完整路径,帮你系统化地解决问题。 一 本地开发调试 Tomcat 或嵌入式容器 一切从本地开始。在Ubuntu桌面环

热心网友
04.28
Ubuntu系统中Java服务如何管理
编程语言
Ubuntu系统中Java服务如何管理

Ubuntu系统中Ja va服务管理方法 一 推荐方式 Systemd服务管理 想把Ja va应用变成可靠的后台服务?Systemd是目前Ubuntu系统上的标准答案。它不仅能管理服务生命周期,还能搞定开机自启、自动重启和集中日志,让运维工作规范不少。 创建服务单元文件:这事儿得从配置文件说起。在

热心网友
04.28
如何在Ubuntu上提升Java安全性
编程语言
如何在Ubuntu上提升Java安全性

Ubuntu上提升Ja va安全性的实用清单 先说几个核心判断:Ja va应用的安全,从来不是单点突破,而是一场从底层系统到上层代码的立体防御。下面这份清单,就为你梳理了在Ubuntu环境下,构建这道防线的关键步骤。 一 系统与Ja va基础加固 安全大厦的地基,从这里开始夯实。 保持系统与JDK

热心网友
04.28
Ubuntu上Java日志如何查看与分析
编程语言
Ubuntu上Java日志如何查看与分析

Ubuntu上Ja va日志查看与分析 一 定位日志文件位置 日志文件到底藏在哪里?别急,按图索骥,从这几个地方入手准没错。 优先查看应用配置:最直接的办法,就是翻看项目里日志框架的配置文件,比如 logback xml、log4j2 xml 或者 log4j properties。里面通常会明确指

热心网友
04.28

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

三星裸眼3D屏来了,广告牌能“跳”出来
科技数码
三星裸眼3D屏来了,广告牌能“跳”出来

三星推出32英寸裸眼3D商用屏,零售展示迎来新玩法 最近,商用显示领域有个新动向值得关注。根据科技媒体Sammobile的报道,三星正式推出了32英寸版本的Spatial Signage裸眼3D商用显示屏。这款产品瞄准的,正是线下零售店这类需要吸引眼球、提升体验的用户群体。 那么,它具体能带来什么改

热心网友
04.29
乐道L80开启预售,双舱大五座纯电SUV整车价24.58万元起
科技数码
乐道L80开启预售,双舱大五座纯电SUV整车价24.58万元起

乐道L80正式预售:24 58万元起,蔚来技术下放瞄准家庭市场 4月28日,蔚来旗下乐道品牌揭开了其智能双舱大五座旗舰SUV——乐道L80的面纱,并同步启动预售。新车的整车预售价从24 58万元起,若选择电池租用方案,起售价则进一步下探至15 98万元。这款车的定位非常明确:为家庭用户而来。它依托蔚

热心网友
04.29
产业化拐点已至,钠电闯过量产深水区
科技数码
产业化拐点已至,钠电闯过量产深水区

发生在4月27日的一则新闻,迅速在舆论界掀起轩然大波:宁德时代与海博思创签下3年60GWh钠离子电池战略合作协议,成为钠电池史上最大单笔订单。一个是全球动力电池巨头,一个是全球储能巨头,两巨头在钠离子电池商业化应用上的大手笔合作,以一种极具爆炸性的方式呈现在公众眼前。 一时间,笼罩在钠电池头上的种种

热心网友
04.29
ASML新专利曝光,要搞混合键合设备?
科技数码
ASML新专利曝光,要搞混合键合设备?

ASML被曝正研发晶圆对晶圆混合键合设备,韩国学者呼吁业界关注 一则来自行业会议的消息,揭示了光刻机巨头ASML可能正在开辟的新战线。据韩媒The Elec报道,在近日于首尔举行的一场先进封装技术会议上,仁荷大学制造创新研究生院的Joo Seung-hwan教授分享了他的观察。 这位教授指出,从AS

热心网友
04.29
海光DCU完成商汤科技SenseNova U1适配
科技数码
海光DCU完成商汤科技SenseNova U1适配

北京商报讯(记者 陶凤 王天逸) 4月28日,海光信息发布消息,宣布了一项重要进展:在商汤科技推出并开源新一代原生多模态大模型SenseNova U1之后,海光自研的DCU产品线率先完成了适配工作,成为国内首批与这款前沿模型实现兼容的国产芯片厂商。 那么,这款备受关注的SenseNova U1有何特

热心网友
04.29