IDEA 远程调试
IDEA 遠(yuǎn)程調(diào)試,像運行本地代碼一樣調(diào)試遠(yuǎn)程主機上的程序,以排查遠(yuǎn)程程序的BUG或代碼執(zhí)行流程。
?
1 概述
原理:本機和遠(yuǎn)程主機的兩個 VM 之間使用 Debug 協(xié)議通過 Socket 通信,傳遞調(diào)試指令和調(diào)試信息。
被調(diào)試程序的遠(yuǎn)程虛擬機:作為 Debug 服務(wù)端,監(jiān)聽 Debug 調(diào)試指令。jdwp是Java Debug Wire Protocol的縮寫。
調(diào)試程序的本地虛擬機:IDEA 中配置的 Remote Server,指定 Debug 服務(wù)器的Host:Port,以供 Debug 客戶端程序連接。
2 設(shè)置
2.1 IDEA 中指定 Debug 服務(wù)器
- 點擊主窗口菜單?Run / Edit Configurations,打開“Run/Debug Configurations”窗口;
- 點擊工具欄上的“+”按鈕,下拉菜單中選擇“Remote”;
- 設(shè)置 Host 為遠(yuǎn)程服務(wù)器的域名或IP,保持 Port=5005 無需調(diào)整;
- 復(fù)制命令行參數(shù),形如?-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
2.2 遠(yuǎn)程服務(wù)中開啟 Debug 服務(wù)
2.2.1 對于 SpringBoot
命令行添加選項,并重啟:
## 注意新參數(shù)必須在 -jar 之前 jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar test.jar
啟動腳本中添加選項,并重啟:2.2.2 對于 Tomcat
2.3 遠(yuǎn)程服務(wù)器防火墻端口放行
### sudo vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5005 -j ACCEPT
### 重啟生效: sudo systemctl restart iptables
3 開始調(diào)試
要求:雙方代碼一致,否則遠(yuǎn)程調(diào)試無法啟動;
- 本地啟動剛剛配置的 Remote Server,正常時會看到日志:?Connected to the target VM, address: 'xxx:5005', transport: 'socket'
- 本地 IDEA 代碼中設(shè)置斷點
- 瀏覽器或手機 HTTP 訪問服務(wù)器
- IDEA 即可在斷點暫停并跟蹤
4 關(guān)閉調(diào)試
服務(wù)器上多開放個端口是不安全的,調(diào)試完畢后可恢復(fù)防火墻設(shè)置。
而 Java 服務(wù)器開啟 Debug 服務(wù)器的功能可以保留,以便之后再次調(diào)試。
總結(jié)
- 上一篇: 电脑照片尺寸如何调整成自己想要的
- 下一篇: 小程序毕设作品之微信校园洗衣小程序毕业设