遠(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端口
打開(kāi)Intellij IDEA,在頂部靠右的地方選擇”Edit Configurations…”,進(jìn)去之后點(diǎn)擊+號(hào),選擇”Remote”,按照下圖的只是填寫(xiě)紅框內(nèi)的內(nèi)容,其中Name填寫(xiě)名稱,這里為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按鈕(長(zhǎng)的像臭蟲(chóng)那個(gè)),看控制臺(tái)日志,如果出現(xiàn)類似“Connected to the target VM, address: ‘xx.xx.xx.xx:5555’, transport: ‘socket’”的字樣,就表示連接成功過(guò)了。我這里實(shí)際顯示的內(nèi)容如下:
Connected to the target VM, address: '10.185.0.192:15555', transport: 'socket'
設(shè)置斷點(diǎn),開(kāi)始調(diào)試
遠(yuǎn)程debug模式已經(jīng)開(kāi)啟,現(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)全部顯示出來(lái)了,并且在剛才設(shè)置了斷點(diǎn)的地方,也顯示了該行的變量值。

需要注意的是,用于遠(yuǎn)程debug的代碼必須與遠(yuǎn)程部署的代碼完全一致,不能發(fā)生任何的修改,否則打上的斷點(diǎn)將無(wú)法命中,切記切記。