希望我能正确解释这一点。
更新:我可以确认dlv debug -l 127.0.0.1:2345
确实有效。因此我必须在 VsCodelaunch.json
更新:消除了恐慌。go 版本有不同的版本。现在 VsCode 中的调试器无法正常工作,它显示“未验证断点”。但如果我dlv
从终端使用,如果我在包含代码的文件夹中,它工作正常。
我正在尝试使用此示例代码进行远程调试。
它适用于这种变化。
你知道该怎么做吗?我试图将 更改launch.json
为"program": "${workspaceRoot}",
包含"program": "${workspaceRoot}/src/app",
.
启动.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}",
"env": {},
"args": []
},
{
// To remote debug in Docker, run the following before debugging:
// # docker build -t webapp-go .
// # docker run -d --name webapp-go --privileged -p 8080:8080 -p 2345:2345 webapp-go
// # docker run -d --name webapp-go --privileged -p 8080:8080 -p 2345:2345 -v "${PWD%/*}/src/app/":/go/src/app webapp-go
// And then each time you want to restart debugging:
// # docker restart
"name": "Remote debug in Docker",
"type": "go",
"request": "launch",
"mode": "remote",
"program": "${workspaceRoot}",
"env": {},
"args": [],
"remotePath": "/go/src/app",
"port": 2345, // Port
"host": "127.0.0.1" // Docker IP
/* "preLaunchTask": "docker" */
}
]
}
Dockerfile:
FROM golang:1.6
RUN go get -u -v github.com/derekparker/delve/cmd/dlv
EXPOSE 2345
# RUN mkdir -p /go/src/app
# WORKDIR /go/src/app
# VOLUME ["src/app2"]
VOLUME ["/go/src/app"]
RUN mkdir -p /go/src/app
WORKDIR /go/src/app
COPY src/app /go/src/app
RUN go-wrapper download
RUN go-wrapper install
EXPOSE 8080
CMD ["dlv", "debug", "--headless", "--listen=:2345", "--log"]