你想在 VSCode 中进行 Java 的调试(Debug),下面是 从 0 开始配置 VS Code Debug 的完整指南,适用于 Java、Spring Boot、Python、Node.js 等多种语言。本文以 Java + Spring Boot 为例,也会说明前端调试和常见问题排查。


✅ 一、安装调试所需插件(Java 项目)

在 VSCode 扩展中安装:

  • ✅ Java Extension Pack
    包括:
    • Language Support for Java
    • Debugger for Java
    • Maven/Gradle 支持

✅ 二、项目结构要求

你的 Java 项目应包含以下结构:

project-root/
├── src/
│   └── main/
│       └── java/
│           └── com/example/DemoApplication.java
├── pom.xml / build.gradle

确保使用 Maven 或 Gradle 构建。


✅ 三、运行与调试 Java 程序

🌟 方法 1:右键 → Debug

  1. 打开 DemoApplication.java
  2. 在方法或行号边上点击 ➕ 设定断点
  3. 右键 → Debug Java
  4. 或点击顶部菜单 ▶️ → Start Debugging

🌟 方法 2:配置 launch.json 文件(更灵活)

在 .vscode/launch.json 中添加调试配置:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "java",
      "name": "Debug (Launch) - DemoApplication",
      "request": "launch",
      "mainClass": "com.example.DemoApplication",
      "projectName": "your-project-name"
    }
  ]
}
  • mainClass:你的启动类完整路径
  • projectName:如果是 Maven/Gradle 多模块项目

✅ 四、调试 Spring Boot 项目

Spring Boot 项目也可以直接 Debug,设置断点并右键 Debug 即可。

或者你可以让 Spring Boot 在调试端口启动:

./mvnw spring-boot:run -Dspring-boot.run.jvmArguments='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005'

然后 VSCode 配置远程 attach:

{
  "type": "java",
  "name": "Attach to Spring Boot 5005",
  "request": "attach",
  "hostName": "localhost",
  "port": 5005
}

✅ 五、WebClient 或 SSE 流式 Debug 技巧

在 WebClient 发起请求或接收响应的位置打断点:

webClient.get()
         .uri("/sse/stream")
         .retrieve()
         .bodyToFlux(String.class)
         .doOnNext(data -> {
             System.out.println("Data: " + data); // ✅ 可以打断点
         })
         .subscribe();
  • 调试 Flux 时建议配合 .doOnNext.doOnError 使用;
  • 流式返回可能异步,主线程先结束,请注意保持运行状态;

✅ 六、常见问题排查

问题解决方案
找不到 mainClass检查 launch.json 中的路径和包名
断点没被触发确保代码已编译,调试器 attach 到正确进程
无法断点在 Lambda 中VSCode 支持,但建议在 .doOnNext() 里调试
Maven 项目运行不了尝试先在终端执行 ./mvnw compile 或重启 IDE

✅ 七、前端(HTML/JS)调试也支持

{
  "type": "chrome",
  "request": "launch",
  "name": "Launch Chrome against localhost",
  "url": "http://localhost:8080",
  "webRoot": "${workspaceFolder}"
}

明白!这里给你一份 Spring Boot + WebClient 调试 SSE 流的完整示例代码 + VSCode调试要点,方便你在 VSCode 中断点调试整个流程。


1. Spring Boot SSE 服务端示例

@RestController
@RequestMapping("/sse")
public class SseController {

    @GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> stream() {
        return Flux.interval(Duration.ofSeconds(1))
                   .map(seq -> "服务器推送消息 #" + seq)
                   .take(10);
    }
}

2. Spring Boot WebClient 调用 SSE 服务端流示例

@Service
public class SseClientService {

    private final WebClient webClient;

    public SseClientService(WebClient.Builder builder) {
        this.webClient = builder.baseUrl("http://localhost:8080").build();
    }

    public Flux<String> consumeSseStream() {
        return webClient.get()
                .uri("/sse/stream")
                .accept(MediaType.TEXT_EVENT_STREAM)
                .retrieve()
                .bodyToFlux(String.class)
                .doOnNext(data -> {
                    System.out.println("接收到消息: " + data);
                    // 这里可以打断点调试
                });
    }
}

3. 控制器触发 WebClient SSE 调用

@RestController
@RequestMapping("/client")
public class ClientController {

    private final SseClientService sseClientService;

    public ClientController(SseClientService sseClientService) {
        this.sseClientService = sseClientService;
    }

    @GetMapping("/consume")
    public Flux<String> consumeStream() {
        return sseClientService.consumeSseStream();
    }
}

4. VSCode调试要点

  • 在 SseClientService.consumeSseStream 的 .doOnNext 中打断点,能看到流式数据逐条打印;
  • Flux 是异步的,调试时可使用 .blockLast() 在测试方法中阻塞观察;
  • 启动 Spring Boot 时,使用 VSCode Java Debug,确保断点生效;
  • 在 VSCode 的 launch.json 配置示例如下:
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "java",
      "name": "Debug Spring Boot",
      "request": "launch",
      "mainClass": "com.example.demo.DemoApplication"
    }
  ]
}

5. 测试步骤

  1. 先启动 Spring Boot 服务(SseController 在 8080 端口提供 SSE);
  2. 访问 http://localhost:8080/client/consume,会启动 WebClient 去消费 SSE 流;
  3. 观察 VSCode 断点,逐条数据进入断点。

如果你想我帮你写一个完整的项目源码,或者示范如何在 VSCode 调试多线程和异步流,随时告诉我!