時間:2020-10-08來源:www.farandoo.com作者:電腦系統城
Remote Debug 綜述
當我們的后臺項目部署到服務器上時,由于環境和本地不同,有時候也會有一些奇奇怪怪的問題出現。只依賴服務器上的日志來診斷可能太不靈活,這時就需要我們進行遠程調試。
在開始我們的步驟前,先確認一點:
我們現在是希望能夠在本地遠程調試服務器上的程序,也就是說:
而且還有一點我們需要注意,就是在調試遠程服務器上的代碼時,一定要保證 遠程服務器 上的代碼和 本地 代碼一致,不然就失去debug效果了。
First Step 本地配置遠程服務 在本地,打開我們的idea,在運行窗口上點擊 Edit Configurations…
會看到新跳出來一個窗口,點擊左上角 ‘+' 號,選擇 Remote
填入相關信息
這樣就算是做好了我們本地的遠程debug配置。
這里補充一個小tip:
這里設置的8002端口是監聽端口,讀者也可以修改為自己想要的端口。
但是要注意,監聽端口和啟動端口必須不同。
也就是服務器上項目啟動的端口,要和你現在設置的這個監聽端口不一樣。
先別急著把這個界面關掉,我們把這一段內容復制下來:
?1 | -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address= 8002 |
Second Step 服務器以遠程監聽方式啟動
打開我們的Xshell(或其他SSH工具)連接上我們的遠程服務器。
啟動時,我們將過去的java -jar xxx.jar
命令給替換成:
1 | java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address= 8002 xxx.jar |
但如果我們的遠程服務器是阿里云、騰訊云等云服務商的云服務器,我們可能需要像下面這樣改:
指定我們開放的ip,確保不會被默認設置為127.0.0.1:8002導致外部無法訪問進來。
1 | java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address= 0.0 . 0.0 : 8002 xxx.jar |
回車啟動,會看到下面的字樣,就說明成功監聽了:
?1 | Listening for transport dt_socket at address: 8002 |
Third Step 在本地調試
點擊debug
可以看到控制臺中顯示出了以下字樣,說明連接成功。
?1 | Connected to the target VM, address: '{ip}:8002' , transport: 'socket' |
然后就可以像調試本地程序一樣打斷點調試了~
2020-11-11
Vue3 響應式偵聽與計算的實現2020-10-19
詳解mybatis-plus配置找不到Mapper接口路徑的坑2020-10-19
SpringBoot下使用MyBatis-Puls代碼生成器的方法