Расширение VsCode Go отлаживает файл Example_c.c вместо реального файла - PullRequest
0 голосов
/ 13 ноября 2018

Я только что попытался выполнить Hello World из VSCode 1.28.2 (Windows 8.1) в файле C: \ Scripts \ hello_world.go:

package main

import (
    "fmt"
)

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

Моя среда выглядит следующим образом:

  • Я установил Go с нуля с помощью установщика Windows:
$ 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 (однако я не понимаю, как это может повлиять на запуск Go из VSCode)
  • Запуск из 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 голосов
/ 13 ноября 2018

Ваша GOPATH должна указывать на "C: \ Scripts". Затем укажите переменную «program» в файле launch.json на «C: \ Scripts», чтобы запустить ее в режиме отладки.

...