首页私人日誌springboot使用IDEA远程Debug

springboot使用IDEA远程Debug

admin 09-23 08:20 171次浏览

springboot使用IDEA远程Debug

项目上线之后,如果日志打印的很模糊或者业务逻辑比较复杂,有时候无法定位具体的错误原因,因此可以通过IDEA远程代理进行Debug。

线上的代码一定要和本地的一致!

环境:

2.1.4.RELEASE(org.springframework.boot)

jdk1.8

Apache Maven 3.5.0

1、先创建一个准备远程调试的Demo,注意构建项目的配置

xsi:schemaLocation="http://maven.apache /POM/4.0.0 https://maven.apache /xsd/maven-4.0.0.xsd"

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.4.RELEASE

com.remote.test

remote_test

0.0.1-SNAPSHOT

remote_test

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-web

org.junit.jupiter

junit-jupiter-api

RELEASE

test

org.apache.maven.plugins

maven-shade-plugin

2.2

org.springframework.boot

spring-boot-maven-plugin

2.1.4.RELEASE

true

false

*:*

META-INF/*.SF

META-INF/*.DSA

META-INF/*.RSA

package

shade

${project.artifactId}-${project.version}-all

META-INF/spring.handlers

META-INF/spring.factories

META-INF/spring.schemas

com.remote.test.remote_test.RemoteTestApplication

xsi:schemaLocation="http://maven.apache /POM/4.0.0 https://maven.apache /xsd/maven-4.0.0.xsd"

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.4.RELEASE

org.springframework.boot

spring-boot-starter-parent

2.1.4.RELEASE

com.remote.test

remote_test

0.0.1-SNAPSHOT

remote_test

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-web

org.junit.jupiter

junit-jupiter-api

RELEASE

test

org.apache.maven.plugins

maven-shade-plugin

2.2

org.springframework.boot

spring-boot-maven-plugin

2.1.4.RELEASE

true

false

*:*

META-INF/*.SF

META-INF/*.DSA

META-INF/*.RSA

package

shade

${project.artifactId}-${project.version}-all

META-INF/spring.handlers

META-INF/spring.factories

META-INF/spring.schemas

com.remote.test.remote_test.RemoteTestApplication

package com.remote.test.remote_test;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;

import java.util.Map;

@RestController

@RequestMapping("remote/test")

public class UserController {

private static final Logger logger = LoggerFactory.getLogger(UserController.class);

@PostMapping("selectByUserId")

public String selectUserInfo(@RequestParam("userId") String userId) {

try {

Map userInfo = new HashMap< ();

userInfo.put("userId",userId);

userInfo.put("age",23);

userInfo.put("name","yanshao");

userInfo.put("address","shanghai");

logger.info("Query user information by user ID. userInfo: {}",userInfo.toString());

return this.success(userInfo);

} catch (Exception e) {

logger.error("Query user information by user ID. userId:{} ", userId, e);

return this.fail();

}

}

private String success(Object data){

Map res = new HashMap< ();

res.put("code",0);

res.put("desc","success");

res.put("data",data);

return res.toString();

}

private String fail(){

Map res = new HashMap< ();

res.put("code",1);

res.put("desc","fail");

return res.toString();

}

}

2、打包

输入:mvn clean package,(大概需要等几分钟),最好在构建之前指定本地repository,就不需要重新下载jar包了。

3、在IDEA配置远程Debug

指定socket port = 8081,指定准备debug的模块

4、在终端启动刚才打好的jar包

a. 先在IDEA启动debug

b. 然后在终端输入命令:java -agentlib:jdwp=transport=dt_socket,server=n,address=localhost:8081 -jar remote_test-0.0.1-SNAPSHOT-all.jar

5、测试

在准备请求的接口上标记断点

注意:必须先在IDEA启动Debug,然后再启动项目

➜ Desktop java -agentlib:jdwp=transport=dt_socket,server=n,address=localhost:8081 -jar remote_test-0.0.1-SNAPSHOT-all.jar

ERROR: transport error 202: connect failed: Connection refused

ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)

JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [debugInit.c:750]

springboot使用IDEA远程Debug
简单总结单例模式的4种写法 VMware ESXi OpenSLP堆溢出漏洞如何解决
相关内容