你想在 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
- 打开
DemoApplication.java
- 在方法或行号边上点击 ➕ 设定断点
- 右键 →
Debug Java
- 或点击顶部菜单 ▶️ →
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)调试也支持
- 安装插件:Debugger for Chrome
- 配置
.vscode/launch.json
为:
{
"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. 测试步骤
- 先启动 Spring Boot 服务(SseController 在 8080 端口提供 SSE);
- 访问
http://localhost:8080/client/consume
,会启动 WebClient 去消费 SSE 流; - 观察 VSCode 断点,逐条数据进入断点。
如果你想我帮你写一个完整的项目源码,或者示范如何在 VSCode 调试多线程和异步流,随时告诉我!
发表回复