AI 辅助调试
wescode 内置的 AI 调试能力可以帮助你快速定位问题、理解错误原因、提出修复建议,将调试效率提升数倍。
错误分析
自动错误检测
当编辑器检测到代码错误时,AI 会自动分析:
- 语法错误:实时检测拼写、语法、类型不匹配等问题
- 运行时错误:分析异常堆栈,定位根本原因
- 逻辑错误:通过 CKG 代码知识图谱发现潜在逻辑问题
错误信息解读
在 Chat 面板中粘贴错误信息,AI 会:
- 解析错误类型和来源
- 定位相关代码位置
- 分析可能的触发条件
- 提供修复方案
示例提问:
"这个 panic 是什么原因?
goroutine 1 [running]:
main.processData(0xc0000b2000, 0x0, 0x0)
/app/main.go:42 +0x1a5"
堆栈追踪分析
Go 堆栈分析
AI 能理解 Go 特有的堆栈格式:
- goroutine 状态识别(running / waiting / sleep)
- 并发竞态条件推断
- panic recover 链追踪
- channel 死锁检测
多语言支持
| 语言 | 支持的堆栈格式 |
|---|---|
| Go | goroutine dump / panic stack |
| Python | traceback |
| JavaScript | Error.stack / Promise rejection |
| Java | Exception stack trace |
| Rust | backtrace |
使用方式
- 复制完整堆栈信息
- 在 Chat 中粘贴并询问
- AI 会自动关联 CKG 中的代码结构
- 提供从根因到修复的完整分析
变量与状态检查
运行时状态推理
AI 可以根据代码结构推理变量状态:
- 空值分析:检测可能的 nil/null 引用路径
- 边界条件:识别数组越界、整数溢出等风险
- 状态机验证:确认状态转换的完整性
- 资源泄漏:追踪未关闭的文件、连接等
与 CKG 集成
通过代码知识图谱,AI 能:
- 追踪变量在调用链中的传递路径
- 识别跨函数的数据依赖
- 检测未初始化或被覆盖的变量
- 分析并发访问的安全性
断点建议
智能断点定位
告诉 AI 你遇到的问题,它会建议最有效的断点位置:
示例:
"用户登录后 Session 丢失,应该在哪里打断点?"
AI 回复:
建议在以下位置设置断点:
1. auth/handler.go:45 — Session 创建点
2. middleware/session.go:23 — Session 读取点
3. store/redis.go:67 — Session 存储写入点
条件断点
AI 还会建议条件表达式,减少不必要的中断:
- 仅在特定用户 ID 时触发
- 仅在特定错误码时触发
- 仅在数据异常时触发
日志分析
日志搜索与关联
将日志片段提交给 AI,它会:
- 模式识别:发现重复出现的异常模式
- 时间线重建:按时间线梳理事件顺序
- 关联分析:将日志条目与代码位置关联
- 根因推断:从日志链推断根本原因
日志优化建议
AI 可以审查现有日志代码并建议:
- 补充缺失的关键日志点
- 优化日志级别(Debug/Info/Warn/Error)
- 添加结构化字段便于搜索
- 去除敏感信息泄露风险
调试工作流示例
场景一:API 返回 500
1. 粘贴错误日志 → AI 解析错误类型
2. AI 通过 CKG 定位相关 handler
3. 分析调用链中可能的失败点
4. 建议具体的修复代码
场景二:并发问题
1. 描述复现条件 → AI 分析竞态窗口
2. AI 检查共享变量的同步机制
3. 识别缺失的锁保护
4. 提供线程安全的修复方案
场景三:性能退化
1. 提供性能数据 → AI 比较历史基线
2. 通过 CKG 分析最近变更
3. 定位热点函数和慢查询
4. 提供优化方案和预估效果
注意事项
- 提供完整的错误信息(不要截断堆栈)
- 说明复现步骤有助于 AI 更精准定位
- 敏感信息(密码、Token)在粘贴前应脱敏
- AI 的修复建议应经过人工验证后再应用
- 复杂问题建议开启新会话以保持上下文清晰