JAVA遠程調試


服務端:

普通的jar項目

jdk1.7之后使用命令:

java -agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y -jar test-remove-debug.jar

jdwp:是 Java Debug Wire Protocol的縮寫
server=y表示是監聽其他debugclient端的請求
address=8000表示服務會在端口號8000監聽debug請求,客戶端必須設置這個端口號才能進行dubug
suspend表示是否在調試客戶端建立連接之后啟動 VM。如果為y,那么當前的VM就是suspend直到有debug client連接進來才開始執行程序。如果你的程序不是服務器監聽模式並且很快就執行完畢的,那么可以選擇在y來阻塞它的啟動,當然如果是服務器監聽模式設置為n;

 

放在tomcat下面的web項目

1) : 編輯 bin 目錄下 catalina.sh 如果是 windos 系統 請編輯catalina.bat 。

首先找到 文件中JPDA_ADDRESS 。 ip地址要改成本地局域網IP。端口隨意改成一個可用的。

 

image-20190720112233501

2):關閉tomcat (如果已經啟動的話)

3) : 啟動tomcat (關鍵)

啟動tomcat的時候不能再用./startup.sh 這個命令了。而是用下面的       

1
./catalina.sh jpda start  

4) :如果啟動成功tomcat 配置就完成了

 

客戶端:

eclipase:

設置 Debug configurations-->Remote Java Application

注意在點擊【Debug】按鈕之前,一定不要多次“啟動本地程序”,否則就會出現"Failed to connect to remote VM. Connection refused"異常,如下圖所示:

3. 調試遠程客戶端

點擊【Debug configurations】中的debug按鈕,運行效果如下,接下來,就和本地調試一模一樣了。在調試過程中,日志打印在遠程服務器,本地console中看不到日志信息。如果是項目為web項目,調試的時候需要一個Http客戶端發起請求,比如postman等等。

 

條件斷點

如果需要對循環中的數據進行調試,使用條件斷點是個不錯的選擇。將斷點設置在指定的位置上,右鍵進一步設置斷點屬性,如下:

 

調試時,程序會中斷在符合條件的代碼處。

 

異常斷點

斷點不僅可以設置在某一行,也可以針對整個工程進行設置。假設你知道程序會在某個地方拋出NullPointerException,可是並不是每一次運行都會出現,就可以為工程設置異常斷點,如下:

 

idea客戶端

  • 1.在Host中填寫遠程ip,在Port中填寫debug的端口。
  • 2.設置遠程jar包對應的本地源碼項目

     

     

同樣的。如果是項目為web項目,調試的時候需要一個Http客戶端發起請求,比如postman等等。

 

備注:

備注轉自如下四篇篇博文,稍作修改。

https://blog.51cto.com/204222/2115352

https://www.cnblogs.com/jianliang-Wu/p/7110681.html

https://www.cnblogs.com/east7/p/10285955.html

https://blog.csdn.net/tengdazhang770960436/article/details/85254026


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM