如何使用 Idea 遠程調試 Java 代碼


起因

  這幾天,我做的項目中需要使用第三方的 API,在第三方的 API 回調時,出現各種錯誤,需要遠程調試。之前做遠程調試的時候,我只會在代碼中輸出日志,記錄下來做分析處理,但這樣做既麻煩又費時,往往還不能准確定位問題,惡心至極。之前做 .NET 開發時用過 Remote Debug 這個功能,想想 Idea 這么牛逼,是不是也有這個功能,上網一查,還真有,共享出來,與諸君共勉。

服務端配置

  首先,我們要讓要讓遠程服務器支持遠程調試功能,在項目啟動項上追加特定的 JVM 參數即可,參數如下:

  • 晚於 JDK 1.4.X 版本
    -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001
  • JDK 1.4.X 版本
    -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001
  • JDK 1.3.X 或早起版本
    -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001
    


    大家根據不同的 JDK 版本使用不同的啟動參數即可。本人使用的是 Tomcat 7 + Java 7 ,在 catalina.bat(linux 環境設置 catalina.sh)中設置 JAVA_OPTS 節點即可,“address=4001” 中的 “4001”為調試端口,大家可以根據需求自行設置(友情提示:不要占用網站的端口,有可能會導致項目啟動報錯)。

 IDE 配置

  然后,配置一下客戶端就可以啦,Idea 的客戶端配置非常簡單在如下圖所示的位置:

點擊 Edit Configurations,即可進入 Run/Debug Configurations 界面:

點擊左上角的“+”標識,可以在下拉框中發現“Remote”選項,選擇確定后,出現右側區域,首先在HOST(標注2)框中配置需要調試的遠程服務器地址,然后在調試端口狂(標注3)中調試端口號(這里的端口號和服務器端的端口號保持一致,本示例中是“4001”),點擊 OK 即可。

調試步驟

  最后,進入調試流程,整個項目的調試也非常簡單,點擊下圖中的 debug 按鈕,當 console 窗口中打印出 “Connected to the target VM, address: 127.0.0.1:4001', transport: 'socket'”即表示鏈接成功:

  當然啦,也會有不順利的情況出現,如:

  • 服務器端口限制,比如服務器屏蔽了“4001”端口,會導致遠程調試失敗;
  • 本地代碼和遠程代碼不一致,也會導致遠程代碼調試失敗;

啟動成功后,你就可以像調試本地代碼一樣 Happy 的調試遠程代碼了。

 


免責聲明!

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



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