google-app-engine go visual-studio-code delve

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.

  1. Instale la extensión de VS Code Go .
  2. go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git
  3. cd $GOPATH/src/src/github.com/GoogleCloudPlatform/golang-samples/appengine/helloworld

    Nota: si su GOPATH tiene más de una entrada, cd al directorio go get descargarse.

  4. Inicie el servidor de desarrollo de App Engine:

    dev_appserver.py --go_debugging=true app.yaml

  5. Visite http: // localhost: 8080 para asegurarse de que el servidor se está ejecutando.
  6. Encuentra el proceso PID of the Go:

    ps aux | grep _go_app

  7. Inicie el servidor Delve (seleccione cualquier puerto disponible en su sistema):

    dlv --headless -l "localhost:2345" attach $GO_APP_PID

  8. Abra la pestaña de depuración del Código VS (⇧⌘D en macOS, Ctrl + Shift + D en Windows y Linux).
  9. Cree una nueva configuración de lanzamiento haciendo clic en el engranaje y seleccionando cualquier entrada (consulte los documentos oficiales here ).
  10. Crea una entrada "Ir: Conectar al servidor":

    Nota: esto es solo una plantilla, puedes editarla más tarde.

  11. 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 }

  12. 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 .