vscode中的golang调试会话陷入恐慌

vscode中的golang调试会话陷入恐慌,go,debugging,Go,Debugging,这是我的go项目的结构 ▶ tree -L 2 . ├── cmd │   ├── app.go │   ├── canary.go ├── go.mod ├── go.sum ├── lib │   ├── clisupport │   ├── fileutils ├── myapp ├── myapp.go ├── pkg │   ├── app │   ├── canary main函数位于myapp.go文件中 我想启动一个调试会话,因此使用以下launch.json文件 {

这是我的
go
项目的结构

▶ tree -L 2
.
├── cmd
│   ├── app.go
│   ├── canary.go
├── go.mod
├── go.sum
├── lib
│   ├── clisupport
│   ├── fileutils
├── myapp
├── myapp.go
├── pkg
│   ├── app
│   ├── canary
main
函数位于
myapp.go
文件中

我想启动一个调试会话,因此使用以下
launch.json
文件

{
    // 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": "myconfig",
            "type": "go",
            "request": "launch",
            "mode": "debug",
            "program": "${workspaceFolder}",
            "args": []
        }
    ]
}
但是,当我单击“调试”按钮时,进程会出现一个巨大的跟踪,如下所示:

/Users/pkaramol/go/pkg/mod/golang.org/x/oauth2@v0.0.0-20190604053449-0f29369cfe45/google/default.go:17:2: missing go.sum entry for module providing package cloud.google.com/go/compute/metadata (imported by golang.org/x/oauth2/google); to add:
    go get golang.org/x/oauth2/google@v0.0.0-20190604053449-0f29369cfe45
/Users/pkaramol/go/pkg/mod/k8s.io/client-go@v0.16.8/discovery/discovery_client.go:28:2: missing go.sum entry for module providing package github.com/golang/protobuf/proto (imported by k8s.io/client-go/discovery); to add:
    go get k8s.io/client-go/discovery@v0.16.8
/Users/pkaramol/go/pkg/mod/github.com/googleapis/gnostic@v0.1.0/extensions/extensions.go:23:2: missing go.sum entry for module providing package github.com/golang/protobuf/ptypes (imported by github.com/googleapis/gnostic/extensions); to add:
    go get github.com/googleapis/gnostic/extensions@v0.1.0
/Users/pkaramol/go/pkg/mod/github.com/googleapis/gnostic@v0.1.0/OpenAPIv2/OpenAPIv2.pb.go:78:8: missing go.sum entry for module providing package github.com/golang/protobuf/ptypes/any (imported by github.com/googleapis/gnostic/OpenAPIv2); to add:
    go get github.com/googleapis/gnostic/OpenAPIv2@v0.1.0
/Users/pkaramol/Workspace/myapp_WORKTREE/myapp/cmd/app.go:13:2: missing go.sum entry for module providing package github.com/spf13/viper (imported by github.com/myorganisation/myapp/cmd); to add:
    go get github.com/myorganisation/myapp/cmd
/Users/pkaramol/go/pkg/mod/google.golang.org/api@v0.15.0/transport/http/dial.go:15:2: missing go.sum entry for module providing package go.opencensus.io/plugin/ochttp (imported by google.golang.org/api/transport/http); to add:
    go get google.golang.org/api/transport/http@v0.15.0
/Users/pkaramol/go/pkg/mod/google.golang.org/api@v0.15.0/transport/http/internal/propagation/http.go:19:2: missing go.sum entry for module providing package go.opencensus.io/trace (imported by google.golang.org/api/transport/http/internal/propagation); to add:
    go get google.golang.org/api/transport/http/internal/propagation@v0.15.0
/Users/pkaramol/go/pkg/mod/google.golang.org/api@v0.15.0/transport/http/internal/propagation/http.go:20:2: missing go.sum entry for module providing package go.opencensus.io/trace/propagation (imported by google.golang.org/api/transport/http/internal/propagation); to add:
    go get google.golang.org/api/transport/http/internal/propagation@v0.15.0
/Users/pkaramol/go/pkg/mod/github.com/googleapis/gax-go/v2@v2.0.5/call_option.go:36:2: missing go.sum entry for module providing package google.golang.org/grpc (imported by google.golang.org/api/option); to add:
    go get google.golang.org/api/option@v0.15.0
/Users/pkaramol/go/pkg/mod/github.com/googleapis/gax-go/v2@v2.0.5/call_option.go:37:2: missing go.sum entry for module providing package google.golang.org/grpc/codes (imported by github.com/googleapis/gax-go/v2); to add:
    go get github.com/googleapis/gax-go/v2@v2.0.5
/Users/pkaramol/go/pkg/mod/google.golang.org/api@v0.15.0/internal/pool.go:10:2: missing go.sum entry for module providing package google.golang.org/grpc/naming (imported by google.golang.org/api/internal); to add:
    go get google.golang.org/api/internal@v0.15.0
/Users/pkaramol/go/pkg/mod/github.com/googleapis/gax-go/v2@v2.0.5/call_option.go:38:2: missing go.sum entry for module providing package google.golang.org/grpc/status (imported by github.com/googleapis/gax-go/v2); to add:
    go get github.com/googleapis/gax-go/v2@v2.0.5
exit status 1
Process exiting with code: 1

为什么会失败?

您必须运行
go mod tidy

Tidy确保go.mod与模块中的源代码匹配。[...] 它还将任何缺少的条目添加到go.sum,并删除任何不必要的条目 一个

这可能发生在调试时,而不会发生在编译/生成时(取决于您在进入调试模式之前实际执行的操作),原因可能是:

  • 或者,只有在测试中才使用具有错误和的依赖项,
    go build
    忽略以
    \u test.go结尾的文件
编译包时,生成将忽略以“\u test.go”结尾的文件


您是否运行了“go mod tidy”
?这确实有效!但是,既然编译/构建的程序没有问题,为什么需要它呢?