在 VS Code Extensions 中搜索 Go 并安装。
您需要安装 Delve 才能在 VS Code 中进行调试(断点、单步执行等)。
go install github.com/go-delve/delve/cmd/dlv@latest
如果你使用asdf安装Go,delve将位于:[&&&]
~/.asdf/shims/dlv您可能想在安装 go 软件包后运行 asdf reshim。
实时重新加载
我们将使用 https://github.com/air-verse/air 为我们进行实时重新加载。
它是一个命令行工具,只需在项目文件夹中运行一次即可监视更改。
安装
~/.asdf/shims/dlv如果你使用 asdf 安装 Go,air 将位于:[&&&]
~/.asdf/shims/air
~/.asdf/shims/air
cd ~/myproject
空气初始化
cd ~/myproject air init- all:标志应应用于构建包中的所有包
- -N:禁用优化以确保生成的代码更接近源代码,以便于调试
- -l:禁用内联优化,其中小函数会就地扩展以减少函数调用的开销,从而更容易调试
- 来自 Delve Reference 的推理
- cmd = "go build -o ./tmp/main ."
cmd = 'CGO_ENABLED=0 go build -gcflags=all="-N -l"-o ./tmp/main .'"'
- cmd = "go build -o ./tmp/main ." cmd = 'CGO_ENABLED=0 go build -gcflags=all="-N -l"-o ./tmp/main .'"'[!信息]
如果满足以下条件,air 将以默认配置运行:air.toml 文件无效
- 通过运行命令air在项目文件夹中运行它
- 它不会使用您的air.toml 文件。
编辑air.toml full_bin以使用[[Delve]]运行构建的二进制文件。
- full_bin = ""
full_bin =“dlv exec ./tmp/main --listen=127.0.0.1:2345 --headless=true --api-version=2 --accept-multiclient --继续 --log --”
- full_bin = "" full_bin = "dlv exec ./tmp/main --listen=127.0.0.1:2345 --headless=true --api-version=2 --accept-multiclient --continue --log --"
在项目文件夹中运行air。您应该看到以下输出。
> cd ~/我的项目
> 空气
__ _ ___
//\ | | | |_)
/_/--\ |_| |_| \_ v1.52.3,使用 Go go1.22.5 构建
mkdir ~/我的项目/tmp
看着。
!排除 tmp
建筑...
跑步...
API服务器监听:127.0.0.1:2345
2024-07-28T18:47:07 07:00 信息层=调试器启动过程,参数为:[./tmp/main]
2024-07-28T18:47:09 07:00 调试层=调试器入口点 0x1006e8000 machoOff 0x100000000
2024-07-28T18:47:09 07:00 警告层=调试器 debug_frame 解决方法未应用:函数内部/abi.(*RegArgs).IntRegArgAddr(位于 0x1006e9070)由 0x1006e9070-0x1006e9110 覆盖
2024-07-28T18:47:09 07:00 调试层=调试器添加目标11503“/Users/alaay/projects/scheduleasy/tmp/main”
2024-07-28T18:47:09 07:00 调试层=调试器继续
2024-07-28T18:47:09 07:00 调试层=调试器ContinueOnce
2024/07/28 18:47:09 启动服务器:5602
> cd ~/my-project > air __ _ ___ / /\ | | | |_) /_/--\ |_| |_| \_ v1.52.3, built with Go go1.22.5 mkdir ~/my-project/tmp watching . !exclude tmp building... running... API server listening at: 127.0.0.1:2345 2024-07-28T18:47:07 07:00 info layer=debugger launching process with args: [./tmp/main] 2024-07-28T18:47:09 07:00 debug layer=debugger entryPoint 0x1006e8000 machoOff 0x100000000 2024-07-28T18:47:09 07:00 warning layer=debugger debug_frame workaround not applied: function internal/abi.(*RegArgs).IntRegArgAddr (at 0x1006e9070) covered by 0x1006e9070-0x1006e9110 2024-07-28T18:47:09 07:00 debug layer=debugger Adding target 11503 "/Users/alaay/projects/scheduleasy/tmp/main" 2024-07-28T18:47:09 07:00 debug layer=debugger continuing 2024-07-28T18:47:09 07:00 debug layer=debugger ContinueOnce 2024/07/28 18:47:09 Starting server on :5602
{
// 使用 IntelliSense 了解可能的属性。
// 悬停鼠标可查看现有属性的描述。
// 欲了解更多信息,请访问:https://go.microsoft.com/fwlink/?linkid=830387
“版本”:“0.2.0”,
“配置”:[
{
"name": "连接到空中",
“类型”:“走”,
“请求”:“附加”,
“模式”:“远程”,
“端口”:2345,
“主机”:“127.0.0.1”
}
]
}
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Attach to Air", "type": "go", "request": "attach", "mode": "remote", "port": 2345, "host": "127.0.0.1" } ] }
[!info] VS Code 无法连接
如果 VS Code 无法连接,则很可能 Delve 未在端口 2345 上运行。尝试使用 lsof -i :2345 检查 dlv 是否正在使用该端口运行。如果它正在运行,您应该看到:
$ lsof -i :2345 命令 PID 用户 FD 类型 设备大小/关闭 节点名称 dlv 15464 用户名 3u IPv4 0x201bff14586139e3 0t0 TCP 本地主机:dbm(监听)$ lsof -i :2345 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dlv 15464 username 3u IPv4 0x201bff14586139e3 0t0 TCP localhost:dbm (LISTEN)陷阱
空气会留意变化
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3