idea远程debug总结

本文介绍了如何在IDEA中通过JDWP远程调试服务,并结合Spring Boot项目的打包策略,包括使用spring-boot-maven-plugin将应用打包为可执行Jar。适合开发者解决内网联调问题和理解Maven构建流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(2条消息) IDEA 远程调试_kefeng.wang 的博客-优快云博客_idea 远程调试

(2条消息) SpringBoot spring-boot-maven-plugin 打包为可执行Jar方法。(已验证)_pengjunlee的博客-优快云博客_spring-boot-maven-plugin打包

在项目开发过程中遇到与第三方外部系统的联调,由于我部署的测试环境是在内网,回调接口的话,是访问不到内网的接口。

解决办法

  1. 将服务部署在有外网ip的测试环境,我这里是将一个web服务部署在虚拟机上模拟,虚拟机开启默认端口例如5005。(这里开放一个服务器端口,注意要考虑安全问题哦)

578

  1. 在idea中配置remote插件,设置 HostPort 即可。复制生成的运行命令
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8080

579

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
  1. 执行刚复制的命令,启动web服务
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remote-demo.jar
  1. 启动idea,输出日志
Connected to the target VM, address: '192.168.133.101:5005', transport: 'socket'

提示已经成功连接上远程服务器。

  1. 访问接口,发现本地已经在远程服务的断点上

580

服务也输出了日志,说明调用的是该接口

额外篇

springboot项目打包

在pom文件中配置:

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.developer</groupId>
    <artifactId>remote-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>remote-demo</name>
    <!-- 打成jar包 -->
    <packaging>jar</packaging>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- springboot打包插件 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

在命令行执行 mvn package spring-boot:repackage , 可看到生成可运行的jar包了。

### Intellij IDEA 远程 Debug 配置及调用方法 #### 1. 启动远程服务端的 JVM 调试模式 为了使远程服务器上的 Java 应用能够被调试,需要在启动命令中加入特定的 JVM 参数。以下是常用的参数配置: ```bash -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port} ``` 其中: - `transport=dt_socket` 表示使用套接字传输数据。 - `suspend=n` 表示应用不会等待调试器连接后再启动(如果设置为 `y` 则会暂停直到有调试器连接)。 - `server=y` 表示当前进程作为服务器端接受客户端连接。 - `${debug_port}` 是指定用于调试的端口号,例如 `8000`。 将以上参数添加到远程服务的应用启动脚本中[^3]。如果是 Tomcat 容器,可以在 `catalina.sh` 文件的第一行追加该参数[^5]。 --- #### 2. 创建 IntelliJ IDEA 的 Remote Debug 配置 在本地 IDE 中完成以下操作以创建远程调试配置: 1. 打开菜单栏中的 **Run -> Edit Configurations...**。 2. 点击左上角的加号 (`+`) 并选择 **Remote**。 3. 填写以下字段: - **Name**: 自定义名称,例如 `Remote Debug`. - **Host**: 输入远程服务器的 IP 地址或域名,默认值为 `localhost` 如果是在同一台机器上测试。 - **Port**: 设置与远程服务一致的调试端口,例如 `8000`。 4. 确认无误后点击 OK。 此时,IntelliJ IDEA 已经准备好监听来自远程服务的调试请求[^2]。 --- #### 3. 添加断点并启动调试 1. 在项目代码的关键位置右键单击左侧边距区域,设置断点。 2. 返回至刚才创建的 Remote Debug 配置,点击绿色三角形按钮 (**Debug**) 开始调试。 3. 当远程服务执行到设置了断点的代码行时,IDE 将自动挂起程序,并允许开发者查看变量状态、堆栈信息等细节[^1]。 注意:确保防火墙未阻止调试端口的数据流,必要时需开放对应端口访问权限。 --- #### 4. 测试环境下的实际应用场景 当遇到仅存在于测试环境而非开发环境的问题时,可以通过远程调试快速定位原因而无需依赖繁琐的日志分析过程。相比传统的日志排查方式,这种方法更加高效且直观[^4]。 --- ### 示例代码片段 假设我们要调试一段简单的 Spring Boot 控制器逻辑,可以按照如下方式进行模拟: ```java @RestController @RequestMapping("/example") public class ExampleController { @GetMapping("/test") public String testEndpoint() { int a = 1; int b = 2; // 可在此处设置断点验证传入参数变化情况 return "Result is " + (a + b); } } ``` 通过上述步骤即可实现对该接口内部逻辑的实时监控。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值