VsCode Go扩展调试Example_c.c文件,而不是实际文件



我刚刚尝试在C:\Scripts\Hello_World.go文件中从VSCode 1.28.2(Windows 8.1(执行Hello World:

package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, Gopher!")
}

我的环境如下:

  • 我使用Windows安装程序从头开始安装Go:
$ go version
go version go1.11.2 windows/amd64
  • 安装在C:\Go上
  • 已安装的VSCode Go扩展:https://marketplace.visualstudio.com/items?itemName=ms-vscode.Go
  • 已安装的调试器:

go get-u github.com/derekparker/delve/cmd/lv

  • 已使用系统属性高级检查:
    • 本地变量GOPATH=%USERPROFILE%\go
    • 本地变量PATH添加%USERPROFILE%\go\bin
    • 系统变量PATH添加C:\Go\bin
    • 系统变量GOROOT=C:\Go\
  • 我有MinGW64、GitBash和MinGW1.0(但我不知道这会对从VSCode运行Go产生什么影响(
  • 从cmd.exe运行程序时不会出现任何问题:
C:Scripts>go run hello_world.go
Hello, Gopher!

在VSCode设置中,我的全局go.gopath和go.goroot设置为:

// Specify GOPATH here to override the one that is set as environment variable. The inferred GOPATH from workspace root overrides this, if go.inferGopath is set to true.
"go.gopath": null
// Specifies the GOROOT to use when no environment variable is set.
"go.goroot": null

因此,我自定义了VSCode中的变量,如下所示:

{
"editor.renderControlCharacters": false,
"go.inferGopath": true,
"go.goroot": "C:\go",
}

现在这是奇怪的部分。当我按下Ctrl+F5时,编译会获取一个"Example_c.c"文件(?(并报告该文件的错误(我从未创建过,甚至不知道该文件存在(:

# _/c_/Scripts
C:UsersMikeAppDataLocalTempgo-build530760830b001_x003.o: In function `main':
./Example_c.c:1: multiple definition of `main'
C:UsersMikeAppDataLocalTempgo-build530760830b001_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
C:UsersMikeAppDataLocalTempgo-build530760830b001_x004.o: In function `main':
./Test_C-01.c:3: multiple definition of `main'
C:UsersMikeAppDataLocalTempgo-build530760830b001_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
C:UsersMikeAppDataLocalTempgo-build530760830b001_x005.o: In function `main':
./Test_C-02.c:3: multiple definition of `main'
C:UsersMikeAppDataLocalTempgo-build530760830b001_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
collect2: ld returned 1 exit status
# _/c_/Scripts
Example_c.c: In function 'main':
Example_c.c:2:3: warning: incompatible implicit declaration of built-in function 'printf'
Example_c.c:4:19: warning: incompatible implicit declaration of built-in function 'malloc'
Example_c.c:9:3: warning: incompatible implicit declaration of built-in function 'free'
exit status 2
Process exiting with code: 1

我已经尝试删除所有临时文件,并多次重新启动VsCode。设置Go环境来调试hello世界的整个体验真的很令人失望。

我还能查什么?有什么提示吗?

您的GOPATH应该指向"C:\Scripts"。然后将launch.json中的"program"变量指向"C:\Scripts",以在调试模式下运行它。

最新更新