调试工具踩坑记:从零开始高效开发 Springboot 项目

独立开发路上
2026-04-25 18:36
阅读 1060

大家好,我是掘金上那个总爱写“手把手”教程的全栈工程师。今天想和你聊聊调试工具——这个看似简单却让无数新手卡壳的关键技能。

我当初学编程时,遇到 bug 第一反应就是疯狂 System.out.println(),结果代码里全是打印语句,还经常找不到问题根源。直到学会用专业调试工具,才真正体会到什么叫“事半功倍”。尤其现在结合 AI 工具(比如 Cursor),效率更是飞升!

这篇文章就带你从零开始,用最接地气的方式掌握调试技巧,顺便看看如何用 Cursor + AI 提效 来避开那些我当年踩过的坑。


为什么调试工具这么重要?

简单说:调试工具能让你“看见”程序运行的过程

不用再靠猜、靠打印日志,而是可以:

  • 逐行执行代码
  • 实时查看变量值
  • 在特定条件中断程序
  • 快速定位异常源头

特别是在开发 Springboot 这类复杂框架项目时,调试几乎是必备技能。


环境准备:三件套配齐

要顺利调试,你需要以下工具:

工具 作用 推荐版本
JDK Java 运行环境 JDK 17+
IDE 编写与调试代码 IntelliJ IDEA(社区版免费)
Cursor AI 辅助编程工具 最新版

步骤一:安装 JDK

Oracle 官网 或使用 OpenJDK,安装后在终端输入:

java -version

看到版本号就说明装好了。

步骤二:安装 IntelliJ IDEA

官网下载社区版(免费):https://www.jetbrains.com/idea/download/
安装过程一路默认即可。

步骤三:安装 Cursor

访问 https://cursor.sh 下载并安装。
登录后绑定 GitHub 账号,就能用 AI 功能了。

💡 小贴士:Cursor 本质是基于 VS Code 的 AI 编辑器,但对 Java 和 Springboot 支持越来越好,特别适合辅助调试逻辑。


核心概念:断点、步进、变量观察

别被术语吓到,其实很简单:

  • 断点(Breakpoint):你希望程序暂停的位置,点击代码行号左侧即可设置。
  • 步进(Step Over/Into)
    • Step Over:执行当前行,不进入方法内部
    • Step Into:进入当前行调用的方法内部
  • 变量观察(Watch):实时查看某个变量的值

举个例子:

public String greet(String name) {
    String message = "Hello, " + name; // ← 在这里设断点
    return message;
}

当程序运行到这行,会暂停,你就能看到 namemessage 的值。


实战:调试一个 Springboot 接口

我们来创建一个简单的 Springboot 项目,并调试它的 REST 接口。

第一步:用 Cursor 快速生成项目

打开 Cursor,新建文件夹,输入提示词:

“用 Springboot 写一个返回用户信息的 GET 接口,路径 /user/{id}”

AI 会自动生成如下代码(你也可以手动写):

// UserController.java
@RestController
public class UserController {

    @GetMapping("/user/{id}")
    public Map<String, Object> getUser(@PathVariable Long id) {
        Map<String, Object> user = new HashMap<>();
        user.put("id", id);
        user.put("name", "User" + id);
        user.put("email", "user" + id + "@example.com");
        return user;
    }
}

第二步:启动应用并设断点

  1. user.put("id", id); 这一行左侧点击,设置断点(会出现红点)
  2. 右键 main 方法,选择 Debug 'Application'

控制台会显示:

Tomcat started on port(s): 8080

第三步:发起请求触发断点

打开浏览器或 Postman,访问:

http://localhost:8080/user/123

此时 IDE 会自动暂停在断点处!你可以:

  • 在右侧 Variables 面板看到 id = 123
  • F8(Step Over) 逐行执行
  • 查看每一步 user 字典的变化

第四步:用 Cursor 辅助分析

如果看不懂某段逻辑,选中代码,按 Cmd+K(Mac)或 Ctrl+K(Windows),让 Cursor 解释:

“解释这段代码的作用”

AI 会告诉你:“这段代码根据传入的用户 ID 构造一个包含基本信息的 Map 对象……”


新手常见问题 & 避坑指南

❌ 问题1:点了 Debug 却不停在断点?

原因:可能没以 Debug 模式启动,或者断点被禁用了。
解决

  • 确保点击的是绿色小虫图标(Debug),不是绿色三角(Run)
  • 检查断点是否被临时禁用(断点上有斜杠表示禁用)

❌ 问题2:变量值显示 <collected> 或看不到?

原因:变量已被垃圾回收,或不在当前作用域。
解决:确保断点设在变量声明之后、使用之前。

❌ 问题3:Springboot 启动太慢,调试效率低?

建议

  • 使用 spring-boot-devtools 实现热重启
  • application.properties 中关闭不必要的自动配置
# application.properties
spring.devtools.restart.enabled=true
logging.level.org.springframework=warn

❌ 问题4:不知道该在哪设断点?

技巧

  • 先在 Controller 入口设断点
  • 如果问题在 Service 层,再深入
  • 结合日志定位异常堆栈,直接跳到出错行

如何用 AI(Cursor)进一步提效?

除了生成代码,Cursor 在调试中还能:

场景 操作
解释错误信息 选中异常堆栈,按 Cmd+L 让 AI 解读
生成测试用例 输入“为 getUser 方法写单元测试”
重构代码 选中代码,输入“用 Optional 避免空指针”

📚 推荐书籍:如果你喜欢系统学习,我强烈推荐《Effective Java》和《Spring实战(第6版)》。前者教你写出更少 bug 的代码,后者详细讲解 Springboot 调试与测试技巧。


下一步学习建议

调试只是起点,接下来你可以:

  1. 学习单元测试:用 JUnit + Mockito 测试你的逻辑,减少手动调试
  2. 掌握日志分析:学会用 logback 输出结构化日志
  3. 尝试远程调试:调试部署在服务器上的应用
  4. 深入 JVM 调优:了解内存、线程等高级调试手段

记住:优秀的开发者不是不写 bug,而是能快速找到并修复 bug

而工具(尤其是 AI 工具)就是你最强的外挂。我当初要是早点用上 Cursor,至少少熬 100 小时夜!


希望这篇“踩坑记录”能帮你少走弯路。如果你觉得有用,欢迎在掘金给我点赞关注,我会持续更新更多“零基础也能懂”的实战教程!

调试路上,我们一起进步 💻✨

评论 0

最热最新
暂无评论
独立开发路上Lv.1
0
影响力
0
文章
0
粉丝