Как настроить сеанс отладки VScode для Golang и AppEngine?
VScodeDebugGoAppEngine
Привет Мир учебник, который показывает, как настроить VS код для отладки Golang App Engine код с Visual Studio (он же VScode )
это используется с использованием кода Helloworld из документации AppEngine:
go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git
на Mac под управлением osX 10.13.3.
я протестировал код и сервер работает локально. Я пытаюсь выяснить, как войти в код с помощью отладчика, чтобы узнать, как использовать отладчик в других проектах.
это были лучшие инструкции я могу найти для использования VScode с ГЭ, но они, кажется, быть устаревшими с учетом уточнений к Golang(например, переключиться на Gcloud, -go_debugging флаг и смена structure каталог):
https://medium.com/@dbenque/debugging-golang-appengine-module-with-visual-studio-code-85b3aa59e0f
вот шаги, которые я взял:
настройка Среды
-
добавлены .файл
export BASEFOLDER="/Users/Bryan/google-cloud-sdk/" . export GOROOT="/usr/local/go" # this shoudln't have to be set with current Version, doing it to follow the tutorial .
как я попытался запустить отладчик:
запустить локальный сервер .
dev_appserver.py --go_debugging=true app.yaml
прикрепить локальный двоичный файл к Delve
ps aux | grep _go_app
dlv attach <#using the PID from the server binary>
Delve успешно присоединяется к двоичному файлу.
и отладки сессии синий прогресс-бар не прекращает сканирование по горизонтали.
переменная боковая панель никогда не заполняется переменными в hello.go
точка останова установлена в hello.go: строка 21
терминал отладки REPL отображает:
Verbose logs are written to:
/var/folders/mw/0y88j8_54bjc93d_lg3120qw0000gp/T/vscode-go-debug.txt
16:02:31, 2018-4-5
InitializeRequest
InitializeResponse
Using GOPATH: /Users/Bryan/go
fmt.Print(u)
Please start a debug session to evaluate
вот запуск.конфигурация json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"remotePath": "",
//"port": 1234,
"port": 2345 // docs say port should match assigned port headless server, https://github.com/Microsoft/vscode-go/wiki/Debugging-Go-code-using-VS-Code#remote-debugging
// this creates bind error
"host": "127.0.0.1",
"program": "${workspaceFolder}/hello.go",
"env": {},
"args": [],
"showLog": true,
"trace": true,
}
]
}
вот версии, которые я установил:
go version go1.10 darwin/amd64
$ gcloud version .
Google Cloud SDK 197.0.0
app-engine-go
app-engine-python 1.9.68
bq 2.0.31
core 2018.04.06
gsutil 4.30
VS code extension:
Go 0.6.78
изменить###########################
$ lsof -n -i :8080
Bryan@Bryans-MacBook-Pro Thu Apr 12 17:02:04 ~
$ lsof -n -i :2345
Bryan@Bryans-MacBook-Pro Thu Apr 12 17:03:34 ~
$ ps aux | grep _go_app
Bryan 7433 0.0 0.0 2434840 800 s000 S+ 5:03PM 0:00.00 grep _go_app
Bryan 7426 0.0 0.0 556603172 3896 s002 S+ 5:02PM 0:00.01 /var/folders/mw/0y88j8_54bjc93d_lg3120qw0000gp/T/tmp8GWk1gappengine-go-bin/_go_app
Bryan@Bryans-MacBook-Pro Thu Apr 12 17:03:52 ~
$ dlv attach --headless -l "localhost:2345" 7426 /var/folders/mw/0y88j8_54bjc93d_lg3120qw0000gp/T/tmp8GWk1gappengine-go-bin/_go_app
API server listening at: 127.0.0.1:2345
когда я запускаю отладчик, REPL показывает:
Verbose logs are written to:
/var/folders/mw/0y88j8_54bjc93d_lg3120qw0000gp/T/vscode-go-debug.txt
couldn't start listener: listen tcp 127.0.0.1:2345: bind: address already in use
Process exiting with code: 1
2 ответов
VS код никогда не присоединяется к Delve, потому что он ждет подключения к удаленному серверу Delve в 127.0.0.1:2345
. Если ты ... --2--> в безголовом режиме, прослушивая по правильному адресу, вы, надеюсь, сможете подключиться.
шаги ниже описывают, как отлаживать приложение Go App Engine, работающее с dev_appserver.py
и никаких других инструментов / помощников. Однако, когда вы вносите изменения в свой код Go,dev_appserver.py
перекомпилирует и перезапускает приложение, изменяя PID Delve необходимо отладить. http://github.com/dbenque/delveAppengine смогите помочь держать Delve прикрепленным к правому процессу. См.здесь для учебника.
- установить VS код Go расширение.
go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git
-
cd $GOPATH/src/src/github.com/GoogleCloudPlatform/golang-samples/appengine/helloworld
Примечание: если ваш ГОПАТ имеет более одной записи,
cd
в каталогеgo get
скачан. -
запустите разработку App Engine сервер:
dev_appserver.py --go_debugging=true app.yaml
- посетить http://localhost:8080 чтобы убедиться, что сервер запущен.
-
найти PID процесса Go:
ps aux | grep _go_app
-
запустите сервер Delve (выберите любой порт, доступный в вашей системе):
dlv --headless -l "localhost:2345" attach $GO_APP_PID
- откройте вкладку отладка VS кода (⇧ ⌘D на macOS, Ctrl + Shift + D на Windows & Linux).
- создать новая конфигурация запуска, щелкнув шестеренку и выбрав любую запись (см. официальные документы здесь).
-
создайте запись "Go: Connect to server":
Примечание: это только шаблон - вы можете изменить его позже.
-
настройте конфигурацию, чтобы указать на порт, указанный при запуске Delve. Вот моя полная конфигурация:
{ "name": "Launch", "type": "go", "request": "launch", "mode": "debug", "remotePath": "", "port": 2345, "host": "127.0.0.1", "program": "${fileDirname}", "env": {}, "args": [], "showLog": true }
- добавить точки останова по желанию и посетить http://localhost:8080 снова. Выполнение должно прекратиться при достижении точки останова, переменные должны быть перечислены в разделе переменные в коде VS, а стек вызовов должен быть в разделе стек вызовов.
для получения общей справки по отладке кода Go в VS Code (не запускается с App Engine) см. https://github.com/Microsoft/vscode-go/wiki/Debugging-Go-code-using-VS-Code.
Да, он устарел. Страница, с которой вы получаете, не выходит. вы можете запустить
go get github.com/GoogleCloudPlatform/golang-samples/tree/master/appengine/helloworld/...
хотя