小编joe*_*150的帖子

vscode (Win 10) 中的断点“未验证”并且在 Linux Docker 容器 (Hyper-V) 中远程调试 Go 应用程序时未命中

我正在为 Windows 10 使用 vscode(1.34.0 内部人员和稳定版本)开发 Go(1.12.0)api 服务器。源代码位于 Windows 机器上定义的 %GOPATH% 中。Delve(dlv.exe - 1.2.0 版)也安装在 %GOPATH%\bin 中,%GOPATH%\bin 也安装在 Windows %PATH% 中。

然后使用 docker-compose 在 Docker(Docker 桌面版本 2.0.0.3 (31259))容器中构建 go 应用程序(因为其他一些服务,如数据库和网络服务器正在其他容器中运行)。然后将最终的 go app 二进制文件与 delve 可执行文件一起复制到 Alpine-Linux 容器中,并且 delve 服务器以无头模式启动。没有源代码被复制到 Alpine-Linux 容器,只有二进制文件。

我还没有设法通过此设置在 vscode 中正确设置远程调试。调试器确实启动了我的应用程序,但任何断点都会立即变灰并变为“未验证”。当应用程序(api 服务器)运行时,它们也不会被命中。

使用 Jetbrains 的 Goland IDE 进行远程调试时,使用此设置进行调试非常有效(调试器启动,可以设置断点并命中)。

在过去的几天里,我试图找到一个解决方案,在 Chrome 调试、Node.js 调试等方面找到了类似问题的论坛帖子,以及这篇关于 Go 的帖子,特别是:

远程调试 - 未验证断点

我还找到了这个示例配置:

https://github.com/lukehoban/webapp-go/blob/debugging/.vscode/launch.json

我认为我遇到的主要问题是,我在任何地方都找不到任何示例,说明如何为 Windows 机器上的远程调试配置正确设置 launch.json 中的程序路径(我也找不到任何涉及此内容的文档)。源代码仅在 GOPATH 中的 Windows 机器上,而不是在应用程序和 delve 运行的最终容器中(这同样适用于 Goland 调试器)

我的项目路径/目录结构(简化):

%GOPATH%\github.com\myuser\project_dir\
   .vscode\
      launch.json
   cmd\ …
Run Code Online (Sandbox Code Playgroud)

go docker docker-compose delve vscode-debugger

5
推荐指数
1
解决办法
1082
查看次数

标签 统计

delve ×1

docker ×1

docker-compose ×1

go ×1

vscode-debugger ×1