IntelliJ - Remote Debug

古古

2020/01/15


如果你想要 debug 某個 run 在 server 上的 SpringBoot 或是 Spring project 時,必須先配置好 remote debug,才能夠在本地打 break point,然後透過 remote debug 傳到 server 上,去對遠端 server 上的 project debug

首先先運行起來在 server 上的 project

如果是 SpringBoot project,需要在執行 build 出來的 jar 檔時,帶上 jvm 啟動參數

java -agentlib:jdwp=transport=dt_socket,address=18090,server=y,suspend=n -jar myservice-0.0.1-SNAPSHOT.jar

如果是傳統的 Spring + tomcat war 檔 project,則是在 tomcat/bin/catalina.sh裡,加入 JAVA_OPTS 設定 jvm 啟動參數

#!/bin/sh
JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=18090,server=y,suspend=n"

接著在自己的電腦上開啟 tunnel

如果自己的電腦是 Windows

先下載 putty ,下載完成之後打開他,然後點選 Tunnels

在 Source port 填上本機的 port,這裡填 1993,但你可以挑一個自己喜歡的 port

在 Destination上 填上 server ip 和 18090,其中 18090 要跟你剛剛在 server 上運行的參數 address 的值一樣

填完之後按 Add,上面 Forwarded ports 就會出現你的設定值

接著按左邊的 session 回到主頁面,在 Host Name 填上 server 的 ip

最後再按右下角 Open 連線,就可以在 Windows 上開啟 tunnel 了

如果自己的電腦是 Mac/Linux

Mac/Linux 開啟 tunnel 的方式比較簡單,只要運行以下指令就可以了

ssh -X -N -L 1993:your-server-ip:18090 your-server-ip

其中 18090 要跟你剛剛在 server 上運行的參數 address 的值一樣,而那個 1993 則是本機的 port,你挑一個自己喜歡的就可以了

設定 IntelliJ

首先先在 IntelliJ 上新增一個 Remote configuration

在 host 的地方填入 localhost,而 port 的地方填入你剛剛開的那個本機 port,我剛剛在本機開的是 1993 port,所以我這裡就填 1993,填好按 OK 保存

接著就可以運行剛剛設置好的 remote configuration 來進行 remote debug 了!

如果連線有成功,IntelliJ 下方會顯示 Connected to the target VM...,這時候就可以打 break point 來對 server 上的 project debug 了