调试
核心功能
通过$dbg
语句在代码中设置断点,启动原生调试器:
fn main() {
a := 1
$dbg // 断点位置
for i in 0..4 {
$dbg // 循环断点
}
}
调试流程:
v run debug_example.v # 启动调试
# 到达断点时进入交互环境
Break on [main] main in debug_example.v:3
debug_example.v:3 vdbg>
调试命令集
命令 | 功能 | 示例 |
| 继续执行 |
|
| 显示调用栈 |
|
| 查看源码 |
|
| 显示当前作用域变量 |
|
| 打印变量值 |
|
| 监视变量变化 |
|
| 取消监视 |
|
| 显示内存使用 |
|
| 显示堆内存 |
|
| 显示当前模块 |
|
| 退出调试 |
|
典型调试场景
- 监视循环变量:
vdbg> w i # 监视变量i
i = 0 (int)
vdbg> c # 继续执行
Break... i = 1 # 自动显示变化值
vdbg> [回车] # 重复上条命令(c)
Break... i = 2
- 源码上下文查看:
vdbg> l # 查看当前断点附近源码
0001 fn main() {
0002 a := 1
0003> $dbg
0004 for ...
- 上下文类型检查:
vdbg> anon? # 检查当前是否匿名函数
false
vdbg> method? # 检查当前是否方法
false
vdbg> generic? # 检查当前是否泛型
false
- 内存分析:
vdbg> mem # 总内存使用
Total allocated: 2.5MB
vdbg> heap # 堆内存详情
Allocations: 142
Free memory: 1.2MB
调试器特性:
- 命令自动补全(Windows除外)
- 回车键重复上条命令
- 变量类型自动显示
- 监视变量跨断点持续生效
⚠️ 注意:调试会话中修改的变量值在继续执行后将恢复实际值