遠(yuǎn)程調(diào)試
使用特定JVM參數(shù)運(yùn)行服務(wù)端代碼
要讓遠(yuǎn)程服務(wù)器運(yùn)行的代碼支持遠(yuǎn)程調(diào)試,則服務(wù)器端的jar包啟動(dòng)的時(shí)候必須加上特定的JVM參數(shù)外永,這些參數(shù)是:
-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port}
其中的${debug_port}是用戶自定義的淑蔚,為debug端口必尼。
本地連接遠(yuǎn)程服務(wù)器debug端口
打開Intellij IDEA,在頂部靠右的地方選擇”Edit Configurations…”炊汹,進(jìn)去之后點(diǎn)擊+號(hào),選擇”Remote”逃顶,按照下圖的只是填寫紅框內(nèi)的內(nèi)容讨便,其中Name填寫名稱,這里為remote webserver以政,host為遠(yuǎn)程代碼運(yùn)行的機(jī)器的ip/hostname霸褒,port為上一步指定的debug_port。然后點(diǎn)擊Apply盈蛮,最后點(diǎn)擊OK即可
本地IDEA啟動(dòng)debug模式
現(xiàn)在在上一步選擇”Edit Configurations…”的下拉框的位置選擇上一步創(chuàng)建的remote webserver废菱,然后點(diǎn)擊右邊的debug按鈕(長的像臭蟲那個(gè)),看控制臺(tái)日志,如果出現(xiàn)類似“Connected to the target VM, address: ‘xx.xx.xx.xx:5555’, transport: ‘socket’”的字樣殊轴,就表示連接成功過了衰倦。我這里實(shí)際顯示的內(nèi)容如下:
Connected to the target VM, address: '10.185.0.192:15555', transport: 'socket'
設(shè)置斷點(diǎn),開始調(diào)試
遠(yuǎn)程debug模式已經(jīng)開啟旁理,現(xiàn)在可以在需要調(diào)試的代碼中打斷點(diǎn)了樊零,比如:
現(xiàn)在在本地發(fā)送一個(gè)到遠(yuǎn)程服務(wù)器的請(qǐng)求,看本地控制臺(tái)的bug界面孽文,劃到debugger這個(gè)標(biāo)簽驻襟,可以看到當(dāng)前遠(yuǎn)程服務(wù)的內(nèi)部狀態(tài)(各種變量)已經(jīng)全部顯示出來了,并且在剛才設(shè)置了斷點(diǎn)的地方芋哭,也顯示了該行的變量值沉衣。
需要注意的是,用于遠(yuǎn)程debug的代碼必須與遠(yuǎn)程部署的代碼完全一致减牺,不能發(fā)生任何的修改厢蒜,否則打上的斷點(diǎn)將無法命中,切記切記烹植。