使用IDEA調(diào)試遠(yuǎn)程Java代碼
點(diǎn)擊上方“藍(lán)色字體”,選擇“設(shè)為星標(biāo)”
做積極的人,而不是積極廢人!
眾所周知使用IDEA開(kāi)發(fā)時(shí)可以通過(guò)debug進(jìn)行調(diào)試并快速定位問(wèn)題,但是如果代碼已發(fā)布到遠(yuǎn)程服務(wù)器上,該如何調(diào)試呢?本文將告訴你如何利用IDEA調(diào)試遠(yuǎn)程服務(wù)器上的代碼
本文會(huì)先講如何配置參數(shù)、調(diào)試,然后講各項(xiàng)參數(shù)的含義,最后講注意事項(xiàng)。各位在嘗試過(guò)程中不需要擔(dān)心這個(gè)沒(méi)看懂,那個(gè)是為什么,只需要跟著做就行了。假如看完整篇文章后還有疑問(wèn),可以在留言區(qū)提問(wèn)
配置本地參數(shù)
打開(kāi)IDEA的 “Run/Debug Configurations”?選項(xiàng),配置遠(yuǎn)程服務(wù)器的IP和端口,如下

紅框中的內(nèi)容暫時(shí)不用管,下一步才會(huì)用到
在綠框中的第一個(gè)輸入框中輸入遠(yuǎn)程服務(wù)器的ip,第二個(gè)輸入框中輸入遠(yuǎn)程服務(wù)器的端口
配置遠(yuǎn)程服務(wù)器參數(shù)
登錄遠(yuǎn)程服務(wù)器,打開(kāi)tomcat的bin文件夾下catalina.sh的文件進(jìn)行編輯,加入如下配置
export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8185'以上配置的等號(hào)后面的參數(shù)來(lái)自于第一步紅框中的內(nèi)容。
大多數(shù)情況下,使用紅框中的第一個(gè)輸入框的內(nèi)容作為參數(shù)
如果遠(yuǎn)程服務(wù)器上的jdk是1.4版本的,則使用紅框中的第二個(gè)輸入框的內(nèi)容作為參數(shù)
如果遠(yuǎn)程服務(wù)器上的jdk是1.3版本的,則使用紅框中的第三個(gè)輸入框的內(nèi)容作為參數(shù)
調(diào)試
啟動(dòng)第一步配置好的IDEA服務(wù),在要調(diào)試的代碼上打上斷點(diǎn),當(dāng)遠(yuǎn)程服務(wù)器上的程序被訪問(wèn)時(shí)就會(huì)進(jìn)入到斷點(diǎn)中,這時(shí)就可以愉快的調(diào)試了
啟動(dòng)IDEA服務(wù)點(diǎn)擊如下按鈕

IDEA啟動(dòng)成功后,控制臺(tái)輸出如下內(nèi)容

參數(shù)解釋
下圖是第一步配置時(shí)的截圖,我們來(lái)逐一解釋以下各個(gè)參數(shù)的含義

先說(shuō)綠框中的參數(shù)
Transport是IDEA和遠(yuǎn)程服務(wù)器的通訊方式,如果遠(yuǎn)程服務(wù)器是linux或macos則選擇socket,如果遠(yuǎn)程服務(wù)器是windows則選擇Shared memory
Debugger mode的可選項(xiàng)有Attach和Listen。Attach表示服務(wù)端啟動(dòng)后等待IDEA去連接;Listen表示IDEA監(jiān)聽(tīng)服務(wù)端的端口,等服務(wù)端準(zhǔn)備好時(shí)會(huì)建立連接,此種方式要求服務(wù)端能ping通本地電腦的ip。通常使用Attach模式
Host是遠(yuǎn)程服務(wù)器的ip,Port是遠(yuǎn)程服務(wù)器的端口
再說(shuō)紅框中的參數(shù)
紅框中的參數(shù)不允許手動(dòng)修改,它跟著綠框中參數(shù)的修改而發(fā)生變化。
-Xrunjdwp:通知JVM使用jdwp(java debug wire protocol)來(lái)運(yùn)行服務(wù)器代碼
transport的值可選dt_socket和dt_shmem,分別對(duì)應(yīng)綠框中的Socket和Shared memory
address對(duì)應(yīng)綠框中的Port,是遠(yuǎn)程服務(wù)器的端口
注意事項(xiàng)
1. 遠(yuǎn)程服務(wù)器上的端口必須沒(méi)有被占用,并且可以被本地訪問(wèn)到,可以通過(guò)telnet測(cè)試,如:telnet 遠(yuǎn)程ip 遠(yuǎn)程端口
2. 遠(yuǎn)程服務(wù)器上部署的代碼必須和本地的源代碼保持一致,否則斷點(diǎn)無(wú)法進(jìn)入
3. 配置遠(yuǎn)程服務(wù)器時(shí),如果JAVA_OPTS參數(shù)在catalina.sh中已經(jīng)存在,則只需要把要配置的參數(shù)追加到后面就行
-?end?-
用心分享面試知識(shí),做有溫度的攻城獅
每天記得對(duì)自己說(shuō):你是最棒的!
往期推薦:
每一個(gè)“好看”,都是對(duì)我們最大的幫助

