Ubuntu Java應用調試方法
在調試前,需確保Ubuntu系統已安裝JDK(Java Development Kit)并配置好環境變量。通過以下命令安裝默認JDK:
sudo apt update
sudo apt install default-jdk
配置環境變量(編輯~/.bashrc
或/etc/environment
文件,添加以下內容,替換java-version-here
為實際版本,如java-17-openjdk-amd64
):
export JAVA_HOME=/usr/lib/jvm/java-version-here
export PATH=$JAVA_HOME/bin:$PATH
保存后執行source ~/.bashrc
使配置生效。
jdb是JDK自帶的命令行調試工具,適合習慣終端操作的開發者。
使用-g
選項編譯Java文件,生成包含變量名、行號等調試信息的.class
文件:
javac -g YourJavaFile.java
通過jps
命令查看Java進程ID(PID),再用jdb附加到目標進程:
jps # 獲取目標Java程序的PID
jdb -attach <PID>
或直接啟動程序并進入調試模式:
jdb YourJavaFile
stop at YourJavaFile:10
run
step
:進入當前行調用的方法內部;next
:執行當前行,不進入方法內部;sum
):print sum
cont
where
更多命令可通過help
命令查看。
IDE(如IntelliJ IDEA、Eclipse)提供圖形化界面,大幅簡化調試流程。以下以IntelliJ IDEA為例說明:
Create New Project
或Open
導入現有Java項目;int sum = add(a, b);
行)。main
方法的Java文件,選擇Debug '類名.main()'
;Step Into
(F7):進入方法內部;Step Over
(F8):執行當前行,不進入方法;Step Out
(Shift+F8):跳出當前方法;Variables
標簽頁顯示當前作用域內的變量值,可右鍵選擇Evaluate Expression
計算表達式;Variables
面板雙擊變量值,可直接修改并查看效果;Frames
標簽頁顯示調用棧,點擊幀可跳轉到對應代碼位置。若Java應用運行在遠程服務器(如Ubuntu服務器),可通過遠程調試連接排查問題。
在啟動命令中添加以下JVM參數(以端口5005
為例):
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005 -jar YourApp.jar
server=y
:表示作為調試服務器;suspend=y
:程序啟動后暫停,等待調試器連接;address=*:5005
:監聽所有網絡接口的5005端口。以IntelliJ IDEA為例:
Run
-> Edit Configurations
;+
號,選擇Remote JVM Debug
;Remote Debug
),修改Port
為遠程端口(如5005
);OK
保存配置;System.out.println
或日志框架Log4j
),記錄關鍵變量值和程序流程,幫助定位問題;jstack
命令生成線程快照(如jstack <PID>
),查看線程狀態(如BLOCKED
、RUNNABLE
),排查線程阻塞問題。