当前位置: 首页
编程语言
Ubuntu系统下Java程序调试方法与步骤详解

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

热心网友 时间:2026-05-06
转载

Ubuntu 上 Ja va 调试实操指南 搞定Ja va调试,环境是第一步。下面这份快速自检清单,能帮你把基础打牢。 一 环境准备与快速自检 安装 JDK:目前主流选择是 OpenJDK 11、17 或 21。打开终端,一行命令搞定:sudo apt update && sudo apt inst

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。

同类文章
更多
Kafka与CentOS其他服务协同配置指南

Kafka与CentOS其他服务协同配置指南

Kafka在CentOS生态中作为数据流通中枢,与EFK日志收集、HDFS存储、HBase、Prometheus+Grafana监控及SparkStreaming流处理系统协同,通过生产者-消费者模式构建实时数据管道,实现解耦、削峰填谷与高效集成。

时间:2026-07-12 06:52
如何使用deluser命令重命名用户的详细操作指南

如何使用deluser命令重命名用户的详细操作指南

在Linux系统管理中,重命名用户需通过删除旧用户并创建新用户实现。操作包括备份数据、用rsync迁移文件、更改文件所有权、删除旧用户及家目录,最后重新登录验证。不同发行版命令略有差异,建议在测试环境演练。

时间:2026-07-12 06:52
详细CentOS系统中C++配置常见问题及解决方法大全

详细CentOS系统中C++配置常见问题及解决方法大全

CentOS配置C++常见问题包括编译器缺失或版本过旧、环境变量错误、依赖库开发包未装、多版本冲突、权限路径问题、内存不足及内核参数不当。需正确安装gcc-c++及devel包,配置PATH与库路径,使用devtoolset或alternatives管理版本,调整权限与ulimit、sysctl参数。

时间:2026-07-12 06:52
CentOS C++环境变量配置方法

CentOS C++环境变量配置方法

在CentOS系统配置C++编译器需设置路径和动态库路径。先验证g++是否已安装,否则使用sudoyuminstallgcc-c++安装。通过whichg++找到安装路径后,在~ bashrc中添加exportPATH=$PATH:该路径并执行source使之生效。动态库路径可用find命令查找后类似加入LD_LIBRARY_PATH。最后用g++编译测试

时间:2026-07-12 06:52
CentOS中C++配置文件位置与路径完整说明

CentOS中C++配置文件位置与路径完整说明

CentOS中C++配置文件包括系统级全局配置( etc profile、 etc bashrc)影响所有用户,用户级配置(~ bashrc)仅影响当前用户,以及第三方库路径和构建工具CMakeLists txt。这些文件共同设置环境变量、库路径及编译选项等详细参数,用于管理相关开发环境。

时间:2026-07-12 06:52
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜