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

时间:2018-11-13 03:52:00

标签: go visual-studio-code vscode-settings

我只是试图从VSCode 1.28.2(Windows 8.1)在C:\ Scripts \ hello_world.go文件中执行一个Hello World:

package main

import (
    "fmt"
)

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

我的环境如下:

  • 我使用Windows安装程序从头开始安装了Go:
$ go version
go version go1.11.2 windows/amd64
  

去-u github.com/derekparker/delve/cmd/dlv

  • 已通过SystemPropertiesAdvanced检查:
    • 局部变量GOPATH =%USERPROFILE%\ go
    • 本地变量PATH添加%USERPROFILE%\ go \ bin
    • 系统变量PATH添加C:\ Go \ bin
    • 系统变量GOROOT = C:\ Go \
  • 我有MinGW64,GitBash和MinGW 1.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:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_x003.o: In function `main':
./Example_c.c:1: multiple definition of `main'
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_x004.o: In function `main':
./Test_C-01.c:3: multiple definition of `main'
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_x005.o: In function `main':
./Test_C-02.c:3: multiple definition of `main'
C:\Users\Mike\AppData\Local\Temp\go-build530760830\b001\_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 World的整个体验确实令人失望。

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

1 个答案:

答案 0 :(得分:0)

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