为 Lithe 提供 C / C++ / Objective-C / Swift / Rust 调试,调试器是你电脑上的
lldb-dap。这是一个社区插件。
English: Debug C / C++ / Objective-C / Swift / Rust programs in Lithe through your own
lldb-dap. A community plugin.
- Lithe 需要支持插件 API 4(目前是 preview 开发版,稳定版还没有)。
lldb-dap在PATH中。macOS:xcode-select --install,或安装 LLVM。插件不内置任何调试器。- 带调试信息的程序,例如
clang -g main.c -o main(gcc -g也可以)。
这个版本是预发布,已收录在 Lithe Store,但只有支持插件 API 4 的 Lithe 才能安装;不支持的版本会提示升级,而不是安装。
从插件市场安装:在支持 API 4 的 Lithe 中打开 设置 → 插件,在市场里找到 LLDB Debugger,确认权限后安装。
从磁盘安装:
- 下载 Releases 里的
lldb-debug-<版本>-darwin.zip。 - 在 Lithe 中打开 设置 → 插件,点右上角 ⚙,选择 从磁盘安装插件…,选中这个 zip,确认权限后安装。 Lithe 如果提示需要重启,按提示重启即可。
装好后打开 C / Rust / Swift 文件,设置断点并开始调试。
插件会请求 debug.launch 权限,并运行你电脑上的 lldb-dap。
插件不写死程序路径。Lithe 按下面的顺序寻找可执行文件,并把结果回显在插件设置里:
program设置,你填了就以它为准。<当前文件所在目录>/<不带扩展名的文件名><项目根目录>/<不带扩展名的文件名><项目根目录>/build/<不带扩展名的文件名>
在调试控制台里输入 ` 加 lldb 命令(例如 `bt)。命令补全来自插件声明的列表和 lldb-dap 自己的补全。
此插件通过宿主的通用 DAP 传输启动 lldb-dap,没有独立后端或日志 writer。
结构化日志 v2 的 Core 生命周期和操作分类记录到 debug/lldb-dap 通道;
关键生命周期为 INFO,运行/暂停等内部状态为 DEBUG,超时和适配器拒绝为 ERROR,取消不算失败。
原生启动和进程异常退出的固定阶段/退出码记录到 debug。程序输出、调试表达式和变量内容属于调试控制台,
不得复制到诊断日志。适配器原始 stderr 仍由宿主调试控制台呈现,不代表已作为 v2 文件持久化。
插件没有自己的进程发送 lithe/log,宿主因此替插件把每次 lldb-dap 启动尝试记成与 SDK 插件
同一组的操作事实,写入 plugins/io.github.lithe-idea.lldb-debug/host 通道,操作名为
debugAdapter/start:调试会话就绪记 plugins.operation.finished(INFO,含耗时);失败记
plugins.operation.failed(ERROR),失败码只取自启动阶段——host.executableUnavailable(无法解析
lldb-dap 启动命令)、host.launchFailed(进程拉起失败)、host.initializeFailed(DAP 初始化失败)、
host.exitedEarly(就绪前退出)、host.timedOut(初始化超时)。用户停止和取消不记录;事实不含程序输出、
变量、路径或命令行。插件不需要任何日志代码,宿主实现见 https://github.com/1lck/Lithe-IDEA/pull/1720。
排障时使用 Lithe 的独立日志窗口和诊断导出,并同时检查调试控制台。
不要启用 LLDBDAP_LOG、完整 DAP 通信转储或以变量、内存、源码和环境内容补充诊断日志。
日志文件不得写入插件安装目录。Windows 的日志实现仍为 v1;本文没有声明 Windows 已完成 v2 验收。
io.github.lithe-idea.lldb-debug/plugin.json # 插件描述,目录名必须等于插件 id
scripts/package.mjs # 校验清单,打包成 dist/lldb-debug-<版本>-darwin.zip
.github/workflows/ci.yml # PR 时打包,并用 Lithe Store 的规则检查
.github/workflows/release.yml # 推送 v<版本> 标签时发布 GitHub Release(预发布)
插件开发资料见 lithe-plugin-docs。
发布新版本:递增 plugin.json 的 version,推送对应的 v<版本> 标签。