在 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。
由於 GoLang 是一種編譯語言,因此程式碼將被編譯為單一執行檔。在開發過程中,進行更改將需要我們不斷地重新編譯,這可能是一個手動過程,尤其是在 VS Code 中。
我們將使用 https://github.com/air-verse/air 為我們進行即時重新載入。
它是一個命令列工具,只需在專案資料夾中執行一次即可監視變更。
安裝軟體套件。假設你有 go v1.22 或更高版本。
go install github.com/air-verse/air@latest
如果您使用 asdf 安裝 Go,air 將位於:
~/.asdf/shims/air
在專案根目錄中初始化一個air.toml設定檔
cd ~/myproject air init
將air.toml [[go build]]指令編輯為:
- all:標誌應該應用於建置包中的所有包
- -N:停用最佳化以確保產生的程式碼更接近原始碼,以便於偵錯
- -l:停用內聯優化,其中小函數會就地擴展以減少函數呼叫的開銷,從而更容易調試
- 來自 Delve Reference 的推理
- 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 --continue --log --"
這將在連接埠 2345 上執行 Delve。
在專案資料夾中執行air。您應該看到以下輸出。
> 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
在 .vscode/launch.config 檔案中,加入以下內容:
{ // 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" } ] }
在 VS Code 運行和調試 (CMD + SHIFT + D) 中,使用 Attach to Air 開始調試
[!info] VS Code 無法連線
如果 VS Code 無法連接,則很可能 Delve 未在連接埠 2345 上運作。嘗試使用 lsof -i :2345 檢查 dlv 是否正在使用該連接埠執行。如果它正在運行,您應該看到:$ lsof -i :2345 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dlv 15464 username 3u IPv4 0x201bff14586139e3 0t0 TCP localhost:dbm (LISTEN)登入後複製
Go 是一種編譯語言。這意味著程式碼被編譯成二進位檔案然後執行。每當我們在 vscode 中更改程式碼時:
這表示 vscode 會斷開連接,您需要重新連接 vscode 才能進行 delve。
以上是設定 Delve 和 Air 使用 VS Code 偵錯 Golang的詳細內容。更多資訊請關注PHP中文網其他相關文章!