在工作經常遇到連接開發數據庫,程序沒有問題,但一到線上或者測試環境運行就出現各種問題,現在我們來配置遠程debug。
一、原理
本機和遠程主機的兩個 VM 之間使用 Debug 協議通過 Socket 通信,傳遞調試指令和調試信息。
被調試程序的遠程虛擬機:作爲 Debug 服務端,監聽 Debug 調試指令。jdwp是Java Debug Wire Protocol的縮寫。
調試程序的本地虛擬機:IDEA 中配置的 Remote Server,指定 Debug 服務器的Host:Port,以供 Debug 客戶端程序連接。
二、遠程調試步驟
1、利用spring-boot創建測試項目ares-boot,並編寫測試Controller
package com.ares.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/hello")
public class HelloController {
@RequestMapping("")
public String hello(String name) {
return "hello " + name;
}
}
打成jar包,利用java -jar 啓動服務
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:10090 -jar ares-springboot-1.0.0.jar --server.port=9090
其中 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:10090 指定開放調試的端口
2、IDEA配置啓動環境(Debug服務器)
新建remote
配置要調試的服務地址和端口
利用debug啓動,瀏覽器訪問http://localhost:9090/hello,我們發現Idea已經進入的debug模式
注意:
1)有時候調試時提示Connect time out,這時候需要關閉防火牆
2)只有本地和遠程的代碼保持一致才能進行遠程調試