一、我们写一个简单的API接口,用来测试

@RestController
public class HelloController {

    @GetMapping("/hello/user")
    public String hello(@RequestParam("num") Integer num){
        System.out.println(num);
        if(num>10){
            return "hello world";
        }
        return "hello!";
    }

}

二、在项目的pom文件内配置支持远程调试

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <jvmArguments>-Xdebug -Xrunjdwp:server=y,suspend=n,address=5005,transport=dt_socket</jvmArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

增加了此配置之后,打包部署后即可支持远程debug调试了

具体参数说明:

-Xdebug:通知JVM工作在debug模式下。

-Xrunjdwp:通知JVM使用(java debug wire protocol)运行调试环境。该参数同时包含了一系列的调试选项。

**transport**:指定了调试数据的传送方式。

dt_socket:是指用socket模式。

dt_shmen:是指共享内存方式,但只适用于Windows平台。

address:调试服务器的端口号,客户端用来连接服务器的端口号。

server=y/n VM 是否需要作为调试服务器执行。

suspend=y/n 是否在调试客户端建立连接之后启动VM。

三、idea将项目打包成jar

四、启动jar包并且带启动参数支持远程调试

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar xxx.jar

五、idea 远程 debug配置

1.选择 Edit configurations 编辑配置

2.点击添加 一个remote JVM Debug

3.添加远程debug配置项,host 和 port 配置后,点击保存。

六、idea 远程debug测试

1.我们将刚刚创建的 remote Test 按debug方式启动

2.然后再方法内打上断点

3.使用postman进行调用测试。

4.调用后可以看到断点进入到了idea

5.我们断点走一步后,可以看到 打印的输出是在 jar启动的命令窗口中,而不是idea的控制台。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐