调试工具踩坑记:从零开始高效开发 Springboot 项目
大家好,我是掘金上那个总爱写“手把手”教程的全栈工程师。今天想和你聊聊调试工具——这个看似简单却让无数新手卡壳的关键技能。
我当初学编程时,遇到 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;
}
当程序运行到这行,会暂停,你就能看到 name 和 message 的值。
实战:调试一个 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;
}
}
第二步:启动应用并设断点
- 在
user.put("id", id);这一行左侧点击,设置断点(会出现红点) - 右键
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 调试与测试技巧。
下一步学习建议
调试只是起点,接下来你可以:
- 学习单元测试:用 JUnit + Mockito 测试你的逻辑,减少手动调试
- 掌握日志分析:学会用
logback输出结构化日志 - 尝试远程调试:调试部署在服务器上的应用
- 深入 JVM 调优:了解内存、线程等高级调试手段
记住:优秀的开发者不是不写 bug,而是能快速找到并修复 bug。
而工具(尤其是 AI 工具)就是你最强的外挂。我当初要是早点用上 Cursor,至少少熬 100 小时夜!
希望这篇“踩坑记录”能帮你少走弯路。如果你觉得有用,欢迎在掘金给我点赞关注,我会持续更新更多“零基础也能懂”的实战教程!
调试路上,我们一起进步 💻✨

评论 0