環境
-
golangで開発したAPIサーバーをDockerコンテナとして稼働させており、その中にデバッガdelveをインストールしてある。
-
delveとのデバッグ用通信ポート2345をローカル(Mac)側に外出ししてある。
-
Dockerコンテナ内のアプリケーションディレクトリは
/app
。 -
VSCodeでブレークポイントデバッグするときは、Devcontainerでコンテナの中に入ったりはせず、ローカルから直接2345ポートに接続してデバッグしている。
docker-compose.yml
services:
app:
container_name: app
...
ports:
- 2345:2345
- 8080:8080
...
↓ VSCodeでブレークポイントデバッグを実行するための設定。
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "debug app",
"type": "go",
"request": "attach",
"mode": "remote",
"remotePath": "/app",
"cwd": "${workspaceRoot}/app",
"port": 2345,
"host": "localhost"
}
]
}
問題
VSCodeのGoプラグイン 0.40.3 までは↑のlaunch.jsonでブレークポイントデバッグが出来ていたが、0.41.xに上げたら動作しなくなった。
どうやら
"remotePath": "/app",
が無視されて、ローカルの ${workspaceRoot}/app
(例:/Users/yagrush/workspace/app
) と同じパス以下を探しに行って「そんなパス無いよ!」と怒られている様子。
解決方法
launch.jsonを見直しした。
"remotePath": "/app",
↓
"substitutePath": [{ "from": "${workspaceRoot}/app", "to": "/app" }],
無事動くようになりましたとさ。