繁体   English   中英

VS Code go 调试:无法启动进程:不是可执行文件

[英]VS Code go debug : could not launch process: not an executable file

我让 vscode 运行并调试 GO 代码就好了,在我从 VSCode 中更新后现在我无法调试并且我不断收到此错误:

could not launch process: not an executable file
Process exiting with code: 1

配置:

go version
go version go1.15.5 windows/amd64

 dlv version
Delve Debugger
Version: 1.6.0


set GOPATH=C:\Users\foo\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=c:\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\FOO~1\AppData\Local\Temp\go-build049073490=/tmp/go-build -gno-record-gcc-switches
PS C:\Dev\my\go\tests>

在此处输入图像描述 我不明白更新中出了什么问题?

由于 package 命名,我遇到了同样的问题。 解决方案是使用 Go 主文件的标准声明:

package main

func main () {
  // Your code + Breakpoint
}

...然后能够使用以下launch.json文件进行调试:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug Go",
      "type": "go",
      "request": "launch",
      "mode": "debug",
      "program": "${workspaceRoot}/main.go"
    }
  ]
}

您收到此错误是因为您的 package 名称与您的主要 function 名称不同。

package fibonacci //this needs to be called main. 

 func fibonacci(c, quit chan int) {

    x, y := 0, 1
    for {
        select {
        case c <- x:
            x, y = y, x+y
        case <-quit:
            fmt.Println("quit")
            return
        }
    }
}

func main() {
    c := make(chan int)
    quit := make(chan int)
    go func() {
        for i := 0; i < 10; i++ {
            fmt.Println(<-c)
        }
        quit <- 0
    }()
    fibonacci(c, quit)
}

就我而言,这正是 Jsperk 所说的,我必须打开其中包含 main() function 的文件,然后才能按运行。

... main.go 需要保持打开状态,如果您打开了另一个文件,测试将显示此错误消息。 – 杰斯珀克

除了 Jsperk 答案。 您还可以配置launch.json ,使其始终开始调试main.go (具有main()函数的文件)。 因为调用堆栈从main()开始,所以您总是会在另一个文件中到达断点。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "main.go"
            
        }
    ]
}

我在 macos 上遇到了与user63898相同的问题。 我已经尝试了在 StackOverflow 和其他论坛上可以找到的所有内容。

我什至确保在执行调试时保持我的 main.go 文件打开,但仍然遇到这个问题:

API server listening at: 127.0.0.1:29559
could not launch process: not an executable file
Process exiting with code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM