Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menyediakan Delve dan Air untuk menyahpepijat Golang dengan Kod VS

Menyediakan Delve dan Air untuk menyahpepijat Golang dengan Kod VS

王林
王林asal
2024-08-10 06:49:32846semak imbas

Setting up Delve and Air to debug Golang with VS Code

Sambungan Kod VS

Cari Sambungan Kod VS Go in dan pasangkannya.

  • https://marketplace.visualstudio.com/items?itemName=golang.Go

Penyahpepijat

Anda perlu memasang Delve untuk mendapatkan penyahpepijatan (titik putus, langkah melalui, dll) dalam Kod VS.

go install github.com/go-delve/delve/cmd/dlv@latest

Jika anda menggunakan asdfto install Go, delve akan terletak di:

~/.asdf/shims/dlv

Anda mungkin mahu menjalankan asdf reshim selepas memasang pakej go.

Muat Semula Langsung

Memandangkan GoLang ialah bahasa yang disusun, kod akan disusun menjadi satu boleh laku. Semasa pembangunan, membuat perubahan memerlukan kami untuk sentiasa menyusun semula, yang boleh menjadi proses manual, terutamanya dalam Kod VS.

Kami akan menggunakan https://github.com/air-verse/air untuk melakukan pemuatan semula secara langsung untuk kami.

Ia ialah alat baris arahan yang hanya perlu dijalankan sekali dalam folder projek anda untuk melihat perubahan.

Pemasangan

Pasang pakej. Dengan mengandaikan anda telah pergi v1.22 atau lebih tinggi.

go install github.com/air-verse/air@latest

Jika anda menggunakan asdf untuk memasang Go, udara akan ditempatkan di:

~/.asdf/shims/air

Mulakan fail konfigurasi air.toml dalam akar projek anda

cd ~/myproject
air init

Edit perintah air.toml [[go build]] kepada:
- semua: bendera hendaklah digunakan pada semua pakej dalam pakej binaan
- -N: pengoptimuman dilumpuhkan untuk memastikan kod yang dihasilkan lebih dekat dengan kod sumber untuk penyahpepijatan yang lebih mudah
- -l: melumpuhkan pengoptimuman sebaris apabila fungsi kecil dikembangkan untuk mengurangkan overhed panggilan fungsi, menjadikannya lebih mudah untuk nyahpepijat
- Penaakulan daripada Rujukan Delve

- cmd = "go build -o ./tmp/main ."
+ cmd = 'CGO_ENABLED=0 go build -gcflags=all="-N -l"-o ./tmp/main .'"'

[!info]
udara akan berjalan dengan konfigurasi lalai jika:

  • fail air.toml tidak sah
  • jalankannya dalam folder projek anda dengan menjalankan command air

Ia tidak akan menggunakan fail air.toml anda.

Edit air.toml full_bin untuk menjalankan binari binari dengan [[Delve]].

- full_bin = ""
+ full_bin = "dlv exec ./tmp/main --listen=127.0.0.1:2345 --headless=true --api-version=2 --accept-multiclient --continue --log --"

Ini akan menjalankan Delve pada port 2345.

Siaran udara dalam folder projek anda. Anda sepatutnya melihat output berikut.

> 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

Melampirkan Kod VS pada Delve

Dalam fail .vscode/launch.config anda, tambahkan yang berikut:

{
  // 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"
    }
  ]
}

Dalam VS Code Run and Debug (CMD + SHIFT + D), mulakan penyahpepijatan dengan Attach to Air

[!info] Kod VS tidak dapat disambungkan
Jika Kod VS tidak dapat disambungkan, kemungkinan besar Delve tidak berjalan pada port 2345. Cuba gunakan lsof -i :2345 untuk menyemak sama ada dlv sedang berjalan menggunakan port tersebut. Jika ia sedang berjalan, anda seharusnya melihat:

$ lsof -i :2345
COMMAND   PID  USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
dlv     15464 username    3u  IPv4 0x201bff14586139e3      0t0  TCP localhost:dbm (LISTEN)

Gotchas

Go ialah bahasa yang disusun. Ini bermakna kod itu disusun menjadi binari dan kemudian dilaksanakan. Setiap kali kami membuat perubahan pada kod dalam vscode:

  • udara akan melihat perubahan
  • bina semula binari
  • mulakan Delve pada 2345

Ini bermakna vscode akan diputuskan sambungan dan anda perlu melampirkan semula vscode untuk menyelidiki.

Atas ialah kandungan terperinci Menyediakan Delve dan Air untuk menyahpepijat Golang dengan Kod VS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn