使用IntelliJ IDEA对Spring Boot项目以及Tomcat Web项目进行远程调试

Spring Boot

新建Spring Boot项目

新建Spring Boot项目,添加一个test接口,用于远程调试测试。

@RestController
@Slf4j
public class TestController {

    @RequestMapping("/test")
    public String test() {
        for (int i = 0; i < 10; i++) {
            log.info("i value :{}", i);
        }
        return "test";
    }
}

编译打包

项目执行编译打包命令,将target/debug-0.0.1-SNAPSHOT.jar上传云服务器

mvn clean package -Dmaven.test.skip=true

JVM调试配置

新建一个远程调试配置
在这里插入图片描述
设置远程IP与调试端口
在这里插入图片描述
复制远程JVM的命令行参数

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8081 

启动远程项目

在服务器执行如下命令:

[root@administrator target]# java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8081 debug-0.0.1-SNAPSHOT.jar
Listening for transport dt_socket at address: 8081

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.8.RELEASE)

2022-07-07 17:25:03.130  INFO 4842 --- [           main] cn.ybzy.debug.DebugApplication           : Starting DebugApplication v0.0.1-SNAPSHOT on administrator with PID 4842 (/root/IDEA/target/debug-0.0.1-SNAPSHOT.jar started by root in /root/IDEA/target)
2022-07-07 17:25:03.149  INFO 4842 --- [           main] cn.ybzy.debug.DebugApplication           : No active profile set, falling back to default profiles: default
2022-07-07 17:25:06.400  INFO 4842 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2022-07-07 17:25:06.430  INFO 4842 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-07-07 17:25:06.435  INFO 4842 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.41]
2022-07-07 17:25:06.618  INFO 4842 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-07-07 17:25:06.618  INFO 4842 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3216 ms
2022-07-07 17:25:07.317  INFO 4842 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2022-07-07 17:25:07.851  INFO 4842 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-07-07 17:25:07.880  INFO 4842 --- [           main] cn.ybzy.debug.DebugApplication           : Started DebugApplication in 6.469 seconds (JVM running for 7.721)

启动本地项目

在这里插入图片描述

本地调试测试

访问:http://IP:8080/test

在这里插入图片描述

Tocmat

创建Web项目

创建一个简单的Web项目
在这里插入图片描述

创建Servlet

添加Servlet API JAR依赖

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>

创建一个简单的Servlet用于调试测试

@WebServlet(name = "TestController", urlPatterns = "/test")
public class TestController extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        for (int i = 0; i < 10; i++) {
            System.out.println("i value is " + i);
        }
        // 设置响应类型
        resp.setContentType("text/html");
        // 获取输出流
        PrintWriter pw = resp.getWriter();
        // 写入响应
        pw.write("<h1>Hello, world!</h1>");
        // flush强制输出
        pw.flush();
    }
}

编译打包

项目执行编译打包命令,将target/debug.war上传云服务器

mvn clean package -Dmaven.test.skip=true

JVM调试配置

新建远程调试配置,设置远程IP与调试端口
在这里插入图片描述
复制远程JVM的命令行参数

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8081

配置catalina文件

Windows环境,修改catalina.bat文件

set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081

Linux环境,修改catalina.sh文件

CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081"

参数说明

-XDebug        			启用调试
-Xnoagent      			禁用默认sun.tools.debug调试器
-Djava.compiler=NONE   禁止JIT编译器的加载 
-Xrunjdwp              加载JVM的JPDA参考实现库
	transport                用于在调试程序和VM使用的进程之间通讯 
	dt_socket                 套接字传输
	server=y/n                VM是否需要作为调试服务器执行
	suspend=y/n                是否在调试客户端建立连接之后启动VM  
	address=8081               调试服务器的端口号,客户端用来连接服务器的端口号

以Linux环境测试:修改catalina.sh,添加CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081"参数

在这里插入图片描述

启动远程项目

将上传的debug.war文件移动到tomcat/webapps目录

进入tomcat/bin目录启动tomcat

[root@administrator bin]# pwd
/usr/local/tomcat/bin
[root@administrator bin]# startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/jdk1.8/jre
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081
Tomcat started.

启动本地项目

在这里插入图片描述

本地调试测试

访问http://IP:8080/debug/test
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeDevMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值