变量与对象检查——看看程序此刻手里拿的是什么
调试变量检查面板
断点暂停后,AIDE 调试面板展示当前作用域内的所有变量:
| 区域 | 内容 |
|---|---|
| Local Variables | 当前方法内定义的局部变量 |
| Field Variables | 当前类的成员变量(this.xxx) |
| Thread Stack | 当前线程的调用堆栈 |
基本类型变量
对于基本类型(int、boolean、String 等),面板直接显示变量名和当前值:
local variables:
int count = 3
boolean isReady = true
String name = "AIDE"
可以一眼看出变量值是否符合预期。
对象变量——展开看内部
对象变量旁边有一个展开箭头(▶),点击可以展开查看该对象的所有字段(包括父类的):
User user = User@1a2b3c (展开)
- int age = 25
- String name = "张三"
- List<String> tags = ArrayList (size=3)
[0] = "开发者"
[1] = "Android"
[2] = "极客"
- boolean isActive = true
这比一堆 print 日志高效太多——直接就能看到对象内部每个字段的实际值。
调用堆栈(Thread Stack)
调用堆栈展示了程序是怎么一路走到当前断点这一行的:
main.java:15 Main.main()
↳ UserService.java:42 UserService.loadUser()
↳ UserRepository.java:88 UserRepository.query()
↳ Database.java:210 Database.executeQuery() ← 当前在这里
每一层都可以点击,AIDE 会跳转到对应方法的源码位置。
变量值变化
单步执行时注意观察变量面板——每次 Step Over 或 Step Into 后,变量值会实时刷新。如果某个变量值在不应该变的时候变了,或者一直没变,那就是线索。
实用调试技巧
对比变量值
如果有两个变量应该相等但实际不相等,直接在面板里对比它们的值。
看 null 问题
如果报了 NullPointerException,进到 catch 块或出错位置,看看哪个对象是 null。
看集合内容
List/Map/Set 等集合类型的变量可以展开查看每个元素,确认数据是否完整。
打印日志 vs 断点
| 场景 | 推荐方式 |
|---|---|
| 快速看一个值 | println |
| 看很多值的变化 | 断点 + 变量面板 |
| 逻辑复杂需要跟踪 | 断点 + 单步 + 堆栈 |
| 偶发 bug | 断点(加条件断点更好,但 AIDE 不支持) |
| 每次运行都要观测 | println(调试器每次都要手动停) |