遠程調試,特別是當你在本地開發的時候,你需要調試服務器上的程序時,遠程調試就顯得非常有用。
本機Intellij IDEA遠程調試
1,打開Inteliij IDEA,頂部菜單欄選擇Run-> Edit Configurations,進入下圖的運行/調試配置界面。
2,點擊左上角'+'號,選擇Remote。分別填寫右側三個紅框中的參數:Name,Host(想要指定的遠程調試端口)。
3,點擊界面右下角應用按鈕即可。
二,服務器端開啟調試模式,增加JVM啟動參數,以支持遠程調試
服務器端的catalina.sh文件,在Tomcat的安裝目錄下,復制到本地,進行編輯,在第一行添加參數配置如下,完成后粘貼回去。
文本:
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8089"
三, Intellij IDEA 啟動遠程調用
最后,打開IDEA,程序上打上斷點,運行模式選遠程,點擊運行。調用服務器端運行的系統程序,系統自動進入斷點
被調試的服務器需要開啟調試模式,服務器端的代碼和本地代碼必須保持一致,則會造成斷點無法進入的問題。
-Xdebug:通知JVM工作在調試模式下
-Xrunjdwp:通知JVM使用(java debug wire protocol)來運行調試環境。參數同時有一系列的調試選項:
<code>session</code>:指定了調試數據的傳送方式,dt_socket是指用SOCKET模式,另外dt_shmem指用共享內存方式,其中dt_shmem只適用於窗口平台.server 參數是指是否支持在服務器模式的虛擬機中。
onthrow:指明當產生該類型的異常時,JVM就會中斷下來,進行調式該參數任選。
<code>release</code>:指明當JVM被中斷下來時,執行的可執行程序該參數可選
<code>suspend</code><:指明:是否在調試客戶端建立起來后,再執行 JVM。
onuncaught(= y或n)指明出現未捕獲的異常后,是否中斷JVM的執行。