功能指南 / 调试与 DAP

调试与 DAP

灵犀指内核内置 DAP(Debug Adapter Protocol)客户端,通过 stdio 与任意兼容的调试适配器通信,为 IDE 与 AI 提供断点调试能力。断点位置、变量状态等调试数据同时可作为 AI 定位问题的输入。

工作原理

  • 调试适配器以子进程方式启动,通过标准输入输出按 Content-Length 帧交换 JSON 消息。
  • 后台读循环持续解析适配器输出:响应按请求序号分发,事件入队等待消费,支持等待指定事件(如 stopped)。
  • 每个请求带 15 秒超时,适配器无响应时不会挂死调用方。
  • 启动后自动完成 initialize 握手;适配器进程随会话结束自动回收,Windows 下静默启动,不会弹出控制台窗口。
  • 适配器的 stderr 默认忽略,避免诊断输出污染协议流。

已验证的调试能力

能力说明
断点管理按文件与行号设置、列出、清除断点
调用栈程序暂停时获取完整 stack trace 与帧 ID
变量检视展开当前作用域的变量列表
表达式求值在指定栈帧上下文中求值任意表达式
单步 / 继续next 单步执行,continue 运行至下一断点或结束
事件通知程序停止、退出等事件实时入队,可供等待消费

调试流程

1

设置断点:在目标文件按行号设置断点,可随时列出或清除全部断点。

2

启动会话:启动调试适配器并运行至断点处,程序暂停后查看调用栈(stack trace)。

3

检视变量:展开当前作用域的变量列表,或用表达式求值(evaluate)计算任意表达式,如 x + y

4

单步与继续next 单步执行,continue 运行至下一个断点或程序结束。

内核已对 Python 调试适配器完成「断点 → 调用栈 → 变量 → 求值 → 单步 → 继续」全流程的端到端验证,覆盖断点命中后的作用域解析(从栈帧到作用域再到变量列表的完整链路)。会话结束后可一次性清除全部断点。

接入新的调试适配器

任何实现了 DAP 协议的调试适配器都可以接入:只需提供适配器的可执行文件路径与启动参数,内核即可以子进程方式拉起并完成初始化握手。帧头解析、请求分发与事件归集全部由内核完成,IDE 侧无需关心协议细节。其他语言接入对应的 DAP 适配器(如 Node、Go、Rust 各自的 adapter)即可获得与上述一致的能力。

接入新适配器后,建议先用一个简单脚本验证断点命中与变量读取,再投入日常调试。

上述调试能力同时通过内核 API 暴露,可供 IDE 面板与 AI 工具调用,详见内核 API。与集成终端中的子进程一样,调试适配器进程也受内核统一管理。

调试过程中,可以随时把断点处的变量状态与调用栈贴到 AI 对话中,让模型基于真实运行时状态定位问题。