Cari Sambungan Kod VS Go in dan pasangkannya.
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.
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.
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
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)Salin selepas log masuk
Go ialah bahasa yang disusun. Ini bermakna kod itu disusun menjadi binari dan kemudian dilaksanakan. Setiap kali kami membuat perubahan pada kod dalam vscode:
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!