一、 前提
??需要準備JDK1.8環(huán)境,安裝IDEA(版本不限)
二、 IDEA中如何實現(xiàn)遠程Debug模式
(1)、創(chuàng)建demo項目
1.File一>New一>project…
2.Maven Archetype一>填寫Name一>選擇jdk1.8一>選擇Web一>創(chuàng)建
(2)、引入依賴
參數(shù)詳解:
【-Xdebug】:通知JVM工作在DEBUG模式下。
【-Xrunjdwp】:通知JVM使用(Java debug wire protocol)運行調(diào)試環(huán)境。
【transport】:指定調(diào)試數(shù)據(jù)的傳送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享內(nèi)存方式。據(jù)說:dt_shmem只適用于Windows平臺。
【address】:調(diào)試服務(wù)器的端口號,客戶端用來連接服務(wù)器的端口號(一般工具中默認5005端口,也可以自定義,這個沒有關(guān)系)。
【server=y/n】:VM 是否需要作為調(diào)試服務(wù)器執(zhí)行(選擇y)。
【suspend=y/n】:是否在調(diào)試客戶端建立連接之后啟動 VM。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.le</groupId>
<artifactId>remote-idea</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>remote-idea Maven Webapp</name>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!--啟動類jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<finalName>remote-idea</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
(3)、創(chuàng)建啟動類和創(chuàng)建demo
啟動類:
package com.le;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author: le
* @date: 2023年05月10日 11:25
* @ClassName: RemoteIdeaApplication
* @Description: TODO
*/
@SpringBootApplication
public class RemoteIdeaApplication {
public static void main(String[] args) {
SpringApplication.run(RemoteIdeaApplication.class, args);
}
}
測試demo:
package com.le.controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author: le
* @date: 2023年05月10日 11:31
* @ClassName: TestDemoController
* @Description: TODO
*/
@RestController
public class TestDemoController {
@PostMapping("/test")
public String test(Integer id, String name) {
System.out.println("id=" + id);
System.out.println("name=" + name);
if (id > 0) {
return "le " + name;
} else {
return "false";
}
}
}
啟動,測試一下demo是否正常
(4)、配置idea
找到Remote Jvm Debug
填寫名稱,輸入IP地址,pom里面配置的端口,選擇jdk對應(yīng)版本,選擇debug的模塊
注意:
選擇 jdk9以上,則為
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:1111
打包
把Jar包放入在D盤根目錄下面,然后使用CMD命令啟動
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remote-idea.jar
在IDEA中啟動,打上斷點
使用ApiPost測試
成功
這個時候我們就可以開始Debug了,是不是方便找問題了,使用linux系統(tǒng)也是一樣的,只是改變一下啟動方式,還要防火墻問題。
二、 IDEA的Debug的優(yōu)缺點?
優(yōu)點: 把斷點打在本地,直接訪問線上程序即可,方便調(diào)試。(線上程序出了問題,無法根據(jù)log進行排查時)。
缺點: 可能會造成“阻塞”。(同一程序中,本地斷點沒走完之前,別的接口請求可能會“阻塞”)。
使用這種方式,有利有弊,根據(jù)不同場景判斷是否使用。
二、 Demo的源代碼地址
百度網(wǎng)盤鏈接:https://pan.baidu.com/s/1i6BxYLtGiRzxLXvlyMxtTw
提取碼:pfg2
也可私信我,找我獲取源代碼文章來源:http://www.zghlxwxcb.cn/news/detail-736951.html
總結(jié)
??以上就是使用IDEA來實現(xiàn)遠程Debug的方法,希望能夠幫助到大家,點贊支持一下,謝謝!文章來源地址http://www.zghlxwxcb.cn/news/detail-736951.html
到了這里,關(guān)于IDEA實現(xiàn)遠程Debug調(diào)試(附上Demo代碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!