目前測試環境開啓了遠程調試,但是很多小夥伴不清楚遠程調試的正確姿勢,容易影響其他人對於測試環境的使用,更嚴重的可能會導致服務不可用。這裏講一下我們瞭解到的遠程調試正確姿勢,供小夥伴們參考。
一、遠程調試的開啓
1)Tomcat工程是在tomcat所在目錄下的bin/startup.bat中,加入
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
2)springBoot工程在啓動時加上同樣的參數
java -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar ***.jar
具體的參數含義:
-server是通知JVM工作在服務器模式下
-Xdebug是通知JVM工作在DEBUG模式下
-Xnoagent禁用默認sun.tools.debug調試器
-Djava.compiler=NONE禁止 JIT 編譯器的加載
-Xrunjdwp加載JDWP的JPDA參考執行實例(JDWP是java調試傳輸協議,即調試器與目標java程序之間的傳輸協議。JVM自帶對這個協議的支持。)
transport用於在調試程序和 VM 使用的進程之間通訊
dt_socket套接字傳輸
server=y/n JVM 是否需要作爲調試服務器執行
suspend=y/n是否在調試客戶端建立連接之後啓動 JVM(如果排查遠程服務啓動不成功的問題,可以嘗試設置爲y,這樣工程啓動時就會連接到本地)
address調試服務器的端口號,客戶端用來連接服務器的端口號
二、IDEA調試器的使用
1.查詢遠程服務地址及調試端口
Ip可以在彈性雲中看到容器地址。
端口可用ps -ef|grep ***查看進程信息,如果開啓了遠程調試,可以看到上述參數,address爲調試端口。
2.新建遠程連接
點擊edit Configurations,點擊+新增,點擊remote。
設置name/host/port
3.點擊debug圖標,出現以下提示即爲遠程連接成功
4.設置與使用斷點
在想要調試的代碼上輕輕一點就能打上斷點。但是我們很有必要對斷點進行一些正確的設置,使用時也要有注意點。不然很容易產生不良影響。
1)斷點選Thread,有必要可加Condition
Thread與all的不同點在於,當進入Thread斷點時,未打斷點的請求依然可以訪問。
當進入All斷點時,整個服務的請求都會被阻塞住。
Condition的寫法與java語法一致。如
2)進入斷點後,點擊mute
愛護環境,人人有責。遠程環境需要我們大家一起愛護,用了遠程調試,可能會影響別人的調用。而且如果是RPC服務,長時間得不到響應可能會導致集羣認爲遠程服務是髒節點,導致後續的請求都不能得到響應,一段時間才能恢復。
一個非常好的避免方法就是,當我們的程序進入斷點後,迅速點擊mute,這樣別人再次調用這個接口時能夠調通。並且不會影響我們這一次的調試。