怎樣在Ubuntu上調試Java編譯代碼
在Ubuntu上調試Java代碼,可通過命令行工具(適合習慣終端操作的用戶)或集成開發環境(IDE)(提供圖形化界面,提升效率)實現。以下是具體方法:
調試前需確保系統安裝了JDK(Java Development Kit),并編譯代碼時包含調試信息(用于查看變量、行號等細節)。
sudo apt update
sudo apt install openjdk-17-jdk
安裝完成后,驗證版本:java -version
javac -version
javac
編譯Java文件時,添加-g
參數(生成調試信息,包括局部變量、行號等):javac -g YourJavaFile.java
若未添加-g
,調試時可能無法查看變量值或準確定位行號。jdb
是JDK自帶的命令行調試工具,適合熟悉終端的用戶,支持設置斷點、單步執行、查看變量等功能。
jdb
啟動調試會話(替換YourJavaFile
為你的類名):jdb YourJavaFile
若程序已運行(如通過java YourJavaFile &
后臺啟動),可通過jps
命令查找進程ID(PID),再用jdb -attach <PID>
附加:jps # 查看Java進程ID
jdb -attach 12345 # 替換為實際PID
stop at YourJavaFile:行號
例如,在第10行設置斷點:stop at YourJavaFile:10
run
命令啟動程序,程序會在斷點處暫停:run
next
(或n
):執行下一行(不進入方法內部);step
(或s
):執行下一行(進入方法內部);continue
(或c
):繼續執行程序直到下一個斷點或結束;print
(或p
):查看變量值(如print sum
查看變量sum
的值);locals
:查看當前作用域的所有局部變量;quit
:退出調試。IDE提供圖形化界面,操作更直觀,適合大多數開發者。以下以IntelliJ IDEA(社區版免費)為例,步驟如下:
idea.sh
啟動。File → New → Project
,勾選Java
,設置項目路徑和SDK(選擇已安裝的JDK);File → Open
,導航到項目目錄導入。int sum = add(a, b);
行)。main
方法的Java文件,選擇Debug 'YourClassName.main()'
(或點擊頂部工具欄的Debug
按鈕)。程序會在斷點處暫停,進入調試模式。Step Over
(F8):執行當前行,不進入方法;Step Into
(F7):進入當前行的方法內部;Step Out
(Shift+F8):跳出當前方法;Variables
面板中查看當前作用域的變量值(可修改變量值測試);Debug
窗口的Frames
標簽中查看方法調用鏈;Resume Program
(F9)繼續運行直到下一個斷點或結束。若Java程序運行在遠程Ubuntu服務器上,可通過遠程調試連接本地IDE進行調試。步驟如下:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar YourApp.jar
參數說明:
transport=dt_socket
:使用socket通信;server=y
:作為調試服務器;suspend=n
:不暫停程序(若設為y
,程序會等待調試器連接后再啟動);address=5005
:調試端口(可自定義,如5005
)。Run → Edit Configurations
;+
號,選擇Remote JVM Debug
;Name
(如Remote Debug
),Host
(遠程服務器IP),Port
(與address
一致,如5005
);Apply
→OK
保存配置。Debug
按鈕(蟲子圖標),連接遠程服務器。程序運行到斷點時會暫停,可像本地調試一樣操作。jvisualvm
命令啟動(需安裝visualvm
包)。Log4j
或SLF4J
),記錄關鍵流程和變量值,幫助定位問題(非實時調試,適合復現問題)。以上方法覆蓋了Ubuntu上調試Java代碼的常見場景,可根據需求選擇合適的方式(命令行適合快速排查,IDE適合復雜項目,遠程調試適合分布式系統)。