VS Code Extensions で Go を検索し、インストールします。
VS Code でデバッグ (ブレークポイント、ステップスルーなど) を行うには、Delve をインストールする必要があります。
go install github.com/go-delve/delve/cmd/dlv@latest
asdf を使用して Go をインストールした場合、delve は次の場所にあります:
~/.asdf/shims/dlv
go パッケージをインストールした後、asdf reshim を実行するとよいでしょう。
GoLang はコンパイル言語であるため、コードは 1 つの実行可能ファイルにコンパイルされます。開発中に変更を加えるには、常に再コンパイルする必要があり、特に VS Code では手動プロセスになる可能性があります。
ライブ リロードを行うには https://github.com/air-verse/air を使用します。
これは、変更を監視するためにプロジェクト フォルダー内で 1 回実行するだけで済むコマンド ライン ツールです。
パッケージをインストールします。 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 リファレンスからの推論
- cmd = "go build -o ./tmp/main ." + cmd = 'CGO_ENABLED=0 go build -gcflags=all="-N -l"-o ./tmp/main .'"'
[!info]
次の場合、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 を再接続する必要があることを意味します。
以上がVS Code で Golang をデバッグするための Delve と Air のセットアップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。