google app engine - ¿Cómo configuro la sesión de depuración de VScode para Golang y AppEngine?
google-app-engine visual-studio-code (2)
Sí, está desactualizado. La página que está recibiendo, no existe. En su lugar, puedes correr
go get github.com/GoogleCloudPlatform/golang-samples/tree/master/appengine/helloworld/...
VScodeDebugGoAppEngine
Tutorial de Hello World que muestra cómo configurar el código VS para depurar el código de Golang App Engine con Visual Studio (también conocido como VScode)
Esto se usa usando el código de Helloworld de la documentación de AppEngine:
go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git
En una Mac con OSX 10.13.3.
He probado el código y el servidor funciona localmente. Estoy tratando de averiguar cómo ingresar el código con el depurador para poder aprender a usar el depurador en otros proyectos.
Estas fueron las mejores instrucciones que pude encontrar para usar VScode con GAE, pero parecen estar desactualizadas según las actualizaciones de Golang (por ejemplo, cambiar a Gcloud, el indicador -go_debugging y cambiar la estructura del directorio):
https://medium.com/@dbenque/debugging-golang-appengine-module-with-visual-studio-code-85b3aa59e0f
Aquí están los pasos que tomé:
establecer entorno
añadido a .bash_profile
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 .
Cómo he intentado hacer que el depurador se ejecute:
iniciar servidor local.
dev_appserver.py --go_debugging=true app.yaml
adjuntar binario local para Delve
ps aux | grep _go_app
dlv attach <#using the PID from the server binary>
Delve se acopla con éxito al binario.
Cuando inicio la sesión de depuración , la barra de progreso azul nunca detiene el escaneo horizontalmente.
La barra lateral VARIABLE nunca se rellena con las variables en hello.go
El punto de interrupción se establece en hello.go: línea 21
El terminal Debug REPL muestra:
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
Aquí está la configuración de launch.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,
}
]
}
Aquí están las versiones que he instalado:
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
EDITAR###########################
$ 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
Cuando inicio el depurador, REPL muestra:
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
VS Code nunca se adjunta a Delve porque está esperando conectarse al servidor Delve remoto en 127.0.0.1:2345
. Si se dlv attach
en modo sin cabeza, escuchando en la dirección correcta, es de esperar que pueda conectarse.
Los pasos a continuación describen cómo depurar una aplicación de Go App Engine que se ejecuta con dev_appserver.py
y no con otras herramientas / ayudantes. Sin embargo, cuando realiza cambios en su código Go, dev_appserver.py
vuelve a compilar y reinicia la aplicación, cambiando el PID Delve debe depurar. http://github.com/dbenque/delveAppengine puede ayudar a mantener Delve conectado al proceso correcto. Vea https://medium.com/@dbenque/debugging-golang-appengine-module-with-visual-studio-code-85b3aa59e0f para un tutorial.
- Instale la extensión de VS Code Go .
-
go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git
cd $GOPATH/src/src/github.com/GoogleCloudPlatform/golang-samples/appengine/helloworld
Nota: si su GOPATH tiene más de una entrada,
cd
al directoriogo get
descargarse.Inicie el servidor de desarrollo de App Engine:
dev_appserver.py --go_debugging=true app.yaml
- Visite http: // localhost: 8080 para asegurarse de que el servidor se está ejecutando.
Encuentra el proceso PID of the Go:
ps aux | grep _go_app
Inicie el servidor Delve (seleccione cualquier puerto disponible en su sistema):
dlv --headless -l "localhost:2345" attach $GO_APP_PID
- Abra la pestaña de depuración del Código VS (⇧⌘D en macOS, Ctrl + Shift + D en Windows y Linux).
- Cree una nueva configuración de lanzamiento haciendo clic en el engranaje y seleccionando cualquier entrada (consulte los documentos oficiales here ).
Crea una entrada "Ir: Conectar al servidor":
Nota: esto es solo una plantilla, puedes editarla más tarde.
Personalice la configuración para que apunte al puerto que especificó al iniciar Delve. Aquí está mi configuración completa:
{ "name": "Launch", "type": "go", "request": "launch", "mode": "debug", "remotePath": "", "port": 2345, "host": "127.0.0.1", "program": "${fileDirname}", "env": {}, "args": [], "showLog": true }
- Agregue puntos de interrupción como desee y visite http: // localhost: 8080 nuevamente. La ejecución debe detenerse cuando se alcanza un punto de interrupción, las variables deben enumerarse en la sección de variables en el Código VS, y la pila de llamadas debe estar en la sección de pila de llamadas.
Para obtener ayuda general sobre la depuración del código Go en VS Code (no se ejecuta con App Engine), consulte https://github.com/Microsoft/vscode-go/wiki/Debugging-Go-code-using-VS-Code .