首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
Ubuntu系统下Java程序调试方法与步骤详解

Ubuntu系统下Java程序调试方法与步骤详解

热心网友
11
转载
2026-05-06

Ubuntu 上 Ja va 调试实操指南

搞定Ja va调试,环境是第一步。下面这份快速自检清单,能帮你把基础打牢。

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

一 环境准备与快速自检

  • 安装 JDK:目前主流选择是 OpenJDK 11、17 或 21。打开终端,一行命令搞定:sudo apt update && sudo apt install default-jdk
  • 版本校验:装完后别急着走,敲入 ja va -versionja vac -version 看看,确保两者都返回有效的版本号。
  • 环境变量(可选):如果你需要管理多个Ja va版本,配置环境变量会方便很多。可以编辑 ~/.bashrc/etc/environment 文件,加入:
    • export JA VA_HOME=/usr/lib/jvm/ja va-11-openjdk-amd64
    • export PATH=$JA VA_HOME/bin:$PATH
  • 最后,执行 source ~/.bashrc 让配置立刻生效。走完这几步,编译和调试所需的工具链和路径就都准备好了。

二 本地命令行调试 JDB

想深入理解调试过程?命令行工具JDB是个绝佳的起点。虽然不如图形界面直观,但胜在轻量、直接。

  • 编译是关键:首先,编译Ja va文件时必须加上 -g 参数来保留调试信息:ja vac -g HelloWorld.ja va
  • 启动调试器:然后就可以用 jdb HelloWorld 命令进入调试会话了。
  • 常用命令一览
    • 设断点stop in HelloWorld.main(在方法入口处中断)或 stop at HelloWorld.ja va:10(在指定行中断)。
    • 运行与继续run 开始执行,cont 从断点处继续。
    • 单步执行step 会“步入”方法内部,next 则“步过”当前行。
    • 查看状态print var 打印变量,locals 查看局部变量,stack 查看调用栈。
  • 一个小练习:为了熟悉断点和栈查看,可以故意写一段会触发异常的代码来练习。
    • 代码示例:在 main 方法中加入 int x = 10/0;
    • 调试过程:在jdb中设置断点后 run,程序会在异常处停住。这时使用 stackprint 命令,就能清晰地定位问题根源。

以上流程,基本覆盖了命令行环境下设置断点、单步跟踪、查看变量和调用栈这些核心调试能力。

三 IDE 图形化调试

处理复杂的业务逻辑时,图形化调试工具的效率优势就非常明显了。IntelliJ IDEA、Eclipse 或者安装了Ja va扩展的 VS Code 都是不错的选择。

  • 基本步骤
    • 在代码行号的左侧单击,轻松设置或取消断点。
    • 点击IDE工具栏的“Debug”按钮(或使用快捷键)以调试模式启动程序。
    • 利用“变量/表达式观察”窗口和“调用栈”视图,进行单步、步入、步过等操作,所有状态一目了然。

当需要可视化地观察对象内部状态、理清复杂的调用路径时,图形化调试无疑更加高效。

四 远程调试与线上问题定位

有些bug在本地难以复现,或者需要直接诊断测试/生产环境的问题,这时远程调试就派上用场了。

  • 开启调试端口:在启动服务时,添加JVM参数以开启调试监听。
    • 推荐方式:ja va -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar
    • 旧版参数(不推荐,但可能遇到):-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
  • 本地连接:在本地IDE(如IDEA)中新建一个“Remote JVM Debug”配置,填写服务器的IP地址和指定的端口(例如5005)。连接附加成功后,就可以像调试本地代码一样设置断点进行调试了。

这招是定位生产环境疑难杂症、无法本地复现缺陷的利器。

五 运行期诊断与常见问题排查

程序已经跑起来了,但行为异常?下面这些运行时诊断工具能帮你快速定位问题。

  • 进程与线程
    • 查看Ja va进程:jps -l
    • 抓取线程栈:jstack ,用于分析死锁、线程阻塞或异常线程状态。
  • GC 与内存
    • 查看GC概况:jstat -gcutil 1000(每秒采样一次,重点关注Full GC的次数和耗时)。
    • 生成堆转储:jmap -dump:format=b,file=heap.hprof ,然后可以用MAT或VisualVM等工具加载分析内存泄漏。
  • 系统层面
    • 资源监控:top -p $(pgrep -f app.jar) 或使用 htop 实时观察CPU、内存占用。
    • 系统调用追踪:strace -f -o trace.log ja va -jar app.jar,当怀疑是文件、网络、权限等系统层问题时,这个命令能提供底层线索。
  • 常见问题速查
    • 版本/类路径问题:再次确认 ja va -versionja vac -version;确保运行时的classpath包含了所有依赖的JAR包。
    • 日志与输出:仔细检查应用自身日志以及容器(如Tomcat)日志,必要时适当提升日志级别以获取更详细的信息。

从线程、内存、GC到系统调用和依赖管理,这套组合拳基本覆盖了线上Ja va应用最常见的问题定位路径。

来源:https://www.yisu.com/ask/76147339.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

如何解决 Ubuntu 系统中找不到 php-fpm.conf 的问题
编程语言
如何解决 Ubuntu 系统中找不到 php-fpm.conf 的问题

Ubuntu 系统 php-fpm conf 配置文件找不到?完整解决方案 在 Ubuntu 21 10 或更高版本中部署 Nginx + PHP FastCGI 环境时,如需配置 log_limit 等 PHP-FPM 专属参数,必须明确安装 php*-fpm 软件包。仅安装 PHP CGI 或

热心网友
05.06
PHP错误日志在Ubuntu中如何查看
编程语言
PHP错误日志在Ubuntu中如何查看

在 Ubuntu 系统中定位与查看 PHP 错误日志的完整指南 当 PHP 应用在 Ubuntu 服务器上出现异常时,错误日志是进行故障诊断的首要依据。准确找到并高效分析日志内容,能极大提升问题排查效率。本指南将详细介绍在 Ubuntu 系统中定位和查看 PHP 错误日志的多种方法。 第一步:启动终

热心网友
05.05
Ubuntu Python 安装过程中常见问题
编程语言
Ubuntu Python 安装过程中常见问题

Ubuntu 上安装 Python 的常见问题与对策 在 Ubuntu 上配置 Python 环境,看似简单,实则暗藏玄机。从版本选择、依赖安装到环境隔离,每一步都可能遇到意想不到的“坑”。别担心,这份指南将带你系统性地梳理常见问题,并提供经过验证的解决方案。 一、安装前准备与基础检查 动手之前,做

热心网友
05.05
php-fpm在ubuntu上如何启动停止
编程语言
php-fpm在ubuntu上如何启动停止

在Ubuntu上管理PHP-FPM服务 高效管理PHP-FPM服务是Linux服务器运维与Web开发环境配置中的核心技能。在Ubuntu系统中,您可以通过一系列简洁明了的命令行操作,轻松完成服务的启动、停止、重启与状态监控。本文将为您提供一份详尽的Ubuntu PHP-FPM服务管理指南。 1 启

热心网友
05.05
php-fpm错误日志ubuntu怎么查看
编程语言
php-fpm错误日志ubuntu怎么查看

在Ubuntu系统中定位与查看PHP-FPM错误日志的完整指南 当服务器出现PHP-FPM相关故障时,查看错误日志是诊断问题的首要且关键步骤。这些日志如同系统的“诊断报告”,详细记录了运行时发生的每一个异常、警告和错误信息。对于Ubuntu系统的用户而言,掌握快速定位并解读这些日志的方法,是高效运维

热心网友
05.05

最新APP

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

热门推荐

H3C路由器管理界面证书错误解决办法指南
电脑教程
H3C路由器管理界面证书错误解决办法指南

H3C路由器登录管理界面提示证书错误,本质是浏览器与设备间SSL TLS安全握手未通过验证,属常见且可快速处置的技术现象。 遇到H3C路由器管理界面弹出“证书错误”的警告,你先别慌。这本质上不是什么大故障,而是浏览器与你的路由器之间在进行安全“握手”时,验证流程没走通。这在设备圈子里其实挺常见,尤其

热心网友
05.06
针式打印机加墨粉是否会影响机器寿命解析
电脑教程
针式打印机加墨粉是否会影响机器寿命解析

针式打印机本身不使用墨粉,而是依靠色带击打完成打印,因此不存在“加墨粉”这一操作,更谈不上墨粉对寿命的影响。所谓“给针打加墨粉”的说法,实为混淆了针式打印机与激光打印机的核心成像原理——前者依赖物理撞击使色带染料转印,后者才通过静电吸附墨粉并经高温定影。权威行业资料显示,针式打印机的使用寿命主要取决

热心网友
05.06
针式打印机能否加注墨粉使用指南
电脑教程
针式打印机能否加注墨粉使用指南

针式打印机不能加墨粉,它使用的是物理击打式打印原理,依靠色带盒中的油墨浸润织物带实现字符转印。 这事儿其实很好理解。针式打印机和办公室里常见的激光打印机,完全是两套“武功路数”。后者依赖碳粉在感光鼓上成像,再经过热压定影,过程充满了静电与高温的精密配合。而针式打印机呢?它的核心耗材体系自始至终都围绕

热心网友
05.06
苏泊尔电磁炉定时设置操作步骤在哪找
电脑教程
苏泊尔电磁炉定时设置操作步骤在哪找

苏泊尔电磁炉的定时功能通常集成在面板主控区,通过“定时”专用按键一键调出 想给炖汤定个时,或者让火锅到点自动关机?这个操作其实就藏在面板的按键区里。苏泊尔电磁炉大多设有一个独立的“定时”键,位置通常在功能键组的右侧或者数字键的上方,图标很好认,不是沙漏就是个小时钟。轻轻一按,配合旁边的“加”和“减”

热心网友
05.06
5G信号究竟差在哪 揭秘高端手机频段覆盖真相
电脑教程
5G信号究竟差在哪 揭秘高端手机频段覆盖真相

高端手机5G频段覆盖差异,核心在于对n28与n79等关键频段的支持完整性 说到高端手机的5G体验,一个常被忽略但至关重要的差异,就藏在那些看似枯燥的频段编号里。尤其是n28(700MHz)和n79(4 9GHz)这两个关键频段,它们的支持是否完整,直接决定了手机信号是“真全能”还是“有短板”。低频段

热心网友
05.06