在 VSCode 内进行更新后,我可以正常运行 VSCode 并调试 GO 代码 现在我无法调试,并且不断收到此错误:
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>
Jsperk 答案的补充。您还可以配置
launch.json
,以便它始终启动调试 main.go
(具有 main()
功能的文件)。因为调用堆栈从 main()
开始,所以您总是会到达另一个文件中的断点。
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "main.go"
}
]
}
由于包命名,我遇到了同样的问题。解决方案是使用 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"
}
]
}
就我而言,这正是 Jsperk 所说的,我必须打开其中包含 main() 函数的文件,然后才能按“运行”。
... main.go 需要保持打开状态,如果您打开了其他文件,测试将显示此错误消息。 – Jsperk
您收到此错误是因为您的包名称与主函数名称不同。
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)
}
我遇到了同样的问题,这是由我的测试文件中未注册的构建标签引起的。
在我的测试文件中,我在第 1 行标记了文件,如下所示。这样我就可以区分运行所有单元测试或集成测试:
//go:build it
我通过将构建标签添加到我的 VSCode 来解决这个问题
settings.json
:
{
"go.buildTags": "it",
}
我在 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