Menyediakan Delve dan Air untuk menyahpepijat Golang dengan Kod VS

王林
Lepaskan: 2024-08-10 06:49:32
asal
695 orang telah melayarinya

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
Salin selepas log masuk

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

~/.asdf/shims/dlv
Salin selepas log masuk

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
Salin selepas log masuk

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

~/.asdf/shims/air
Salin selepas log masuk

Mulakan fail konfigurasi air.toml dalam akar projek anda

cd ~/myproject
air init
Salin selepas log masuk

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 .'"'
Salin selepas log masuk

[!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 --"
Salin selepas log masuk

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
Salin selepas log masuk

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"
    }
  ]
}
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!