Zed Debug设置

本文写于2026 年1 月 18 日 后续可能zed的ui产生改变,部分UI位置可能并不准确

由于Zed的Debug的设置和vscode的设置不同,官方文档写的也文档也有点模糊,所以先写一个具体的小过程 自用。

创建Debug文件

zed的Debug是根据./zed下的debug.json文件来进行读取调试配置的,我们可以手动创建配置文件,当然也可以通过本身debug界面中的按键进行创建设置

Debug内容设置

在此之前先放一个我的一个debug的例子,接下来通过这个例子来对应

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[
{
"label": "Build & Debug native binary",
"build": {
"command": "cargo",
"args": ["build"],
},
"program": "$ZED_WORKTREE_ROOT/target/debug/binary",
// sourceLanguages is required for CodeLLDB (not GDB) when using Rust
"sourceLanguages": ["rust"],
"request": "launch",
"adapter": "CodeLLDB",
},
{
"label": "Build dns_server",
"name": "Launch",
"adapter": "CodeLLDB",
"request": "launch",
"program": "$ZED_WORKTREE_ROOT/project/target/debug/rkl",
"args": ["compose", "up", " ~/桌面/test-rkl/compose.yaml"],
},
]

首先这个json文件包含必须是一个列表,列表中包含几个对应的字典,而这里的每个字典都对应着调试设置中的一个标签的功能。

接下来详细分析每个字段的意思

label

字符串类型

label属于一个必须字段,也就是其中的列表的标签内容

adapter

字符串类型

必须字段,用于选择调试器后端,一般参数如下图,由于本身zed支持rust、C、py的调试即可直接使用,其他的可以通过在插件中下载调试器实现

progam

字符串类型

必须字段,要调试的二进制文件地址

以上是属于zed所规定的必须填入的字段,其他字段是根据对应调试器的设置进行配置,对应的网址如下

一般调试二进制文件更多一些,我个人更多调试rust,所以这里记载一下lldb的部分常用配置(clang等类似)

request

字符串

Debug的一个请求方式,这个可以具体看我gdb中关于调试载入方法的介绍,一般我们默认launch即可,除非我们需要attach一个正在运行的进程(这个情况下为什么不用万能的gdb呢)

name

字符串类型

lldb写的必需,但zed里可以忽略,毕竟会直接使用label,启动配置名称,出现在“运行”和“调试”面板中的信息

preRunCommands

字符串列表

启动或者附加之前自动使用的指令

sourceLanguages

字符串列表

比较关键的一个参数,通过这个参数可以写入要确定的语言特征,在debug的时候会对列表中的语言进行猜测并特殊处理,典型例子就是写入了rust以后有的特征和结构体就可以推断出,变成类rust源码的形式,否则信息不全生成的函数难以辨认

其他字段

启动一个新流程

选择“启动”启动方法时,这些属性是适用的:

属性 类型
program 字符串 通往工作区机器上可执行文件的路径(即 CodeLLDB 运行的主机)。除非您使用targetCreateCommandscargo。这相当于调用target create <program>对于选择目标架构或远程文件路径等高级选项,请使用targetCreateCommands相反。
cargo 字符串 Cargo support请参阅货运支持。
args 字符串 ❘ 字符串 命令行参数。如果以字符串形式提供,则使用类似 shell 的语法进行拆分。
cwd 字符串 调试器的工作目录。
env 词典 在从父进程继承的变量之上添加环境变量(除非是 LLDBtarget.inherit-env设置是false在这种情况下,初始环境是空的)。参考现有变量${env:NAME}例如:"PATH": "${env:HOME}/bin:${env:PATH}"
envFile 字符串 通往包含额外环境变量的文件路径。定义在env将覆盖从此文件中加载的值。
stdio 字符串 ❘ 字符串 ❘ 字典 请参见Stdio Rediction。
terminal 字符串 调试器stdio流的目标:- console用于调试控制台-integrated(默认)用于 VSCode 集成终端- external用于新终端窗口
stopOnEntry 布尔 是否在启动后立即停止调试。