Comment configurer la session de débogage VScode pour Golang et AppEngine?

VScodeDebugGoAppEngine

tutoriel Hello World qui montre comment configurer VS Code pour déboguer le code moteur de L'application Golang avec Visual Studio (alias VScode)

ceci utilise le code Helloworld de la documentation D'AppEngine:

go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git

sur un Mac OSX 10.13.3.

j'ai testé le code et le serveur fonctionne en local. J'essaie de comprendre comment entrer dans le code avec le débogueur pour apprendre à utiliser le débogueur sur d'autres projets.

ce sont les meilleures instructions que j'ai pu trouver pour utiliser VScode avec GAE mais elles semblent être périmées en fonction des mises à jour de Golang(par exemple, passer à gcloud,- go_debugging flag et changement de répertoire structure):

https://medium.com/@dbenque/debugging-golang-appengine-module-with-visual-studio-code-85b3aa59e0f

Voici les mesures que j'ai prises:

mettre en place des Environnement

  • ajouté .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 . 
    

Comment j'ai essayé d'obtenir de l'débogueur pour exécuter:

démarrage du serveur local .

dev_appserver.py --go_debugging=true app.yaml

joindre binaire local pour Plonger

 ps aux | grep _go_app 

dlv attach <#using the PID from the server binary>

Delve s'attache avec succès au binaire.

quand je commence le session de Débogage, la barre bleue de progression ne cesse jamais de balayer horizontalement.

la VARIABLE barre latérale n'est jamais remplie avec les variables dans bonjour.aller

le point de rupture est positionné à hello.aller: ligne 21

le terminal de débogage REPL affiche:

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  

voici le lancement.JSON config:

{
    "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,
    }
    ]
}

Voici les versions que j'ai installé:

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

MODIFIER###########################

$ 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

quand je démarre le débogueur, REPL affiche:

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
21
demandé sur nvoigt 2018-03-17 00:22:08

2 réponses

le code VS ne se fixe jamais à Delve car il attend de se connecter au serveur Delve à 127.0.0.1:2345. Si vous dlv attach en mode sans tête, en écoutant à la bonne adresse, vous devriez être en mesure de vous connecter.

les étapes ci-dessous décrivent comment déboguer une application Go App Engine fonctionnant avec dev_appserver.py et aucun autre outil / helpers. Cependant, lorsque vous apportez des modifications à votre code Go, dev_appserver.py recompile et redémarre l'application, en changeant le PID Delve doit être débogué. http://github.com/dbenque/delveAppengine peut aider à maintenir la profondeur attachée au bon processus. Voir ici pour un tutoriel.

  1. Installer VS Code Go extension.
  2. go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git
  3. cd $GOPATH/src/src/github.com/GoogleCloudPlatform/golang-samples/appengine/helloworld

    Note: si votre GOPATH contient plus d'une entrée, cd dans le répertoire go get télécharger.

  4. démarrage du développement du moteur App serveur:

    dev_appserver.py --go_debugging=true app.yaml

  5. Visite http://localhost:8080 pour vous assurer que le serveur est en cours d'exécution.
  6. Trouver le PID des processus:

    ps aux | grep _go_app

  7. Démarrer le Plonger serveur (sélectionner n'importe quel port disponible sur votre système):

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

  8. ouvrir L'onglet de débogage du code VS (mandated on macOS, Ctrl+Shift+D on Windows & Linux).
  9. Créer un nouveau lancez la configuration en cliquant sur l'engrenage et en sélectionnant n'importe quelle entrée (voir docs officiels ici).
  10. Créer un "Aller: se Connecter au serveur" entrée:create config dropdown

    Note: Ce n'est qu'un modèle - vous pouvez l'éditer plus tard.

  11. Personnalisez la configuration pour pointer vers le port que vous avez spécifié lors du démarrage de Delve. Voici ma configuration:

    {
        "name": "Launch",
        "type": "go",
        "request": "launch",
        "mode": "debug",
        "remotePath": "",
        "port": 2345,
        "host": "127.0.0.1",
        "program": "${fileDirname}",
        "env": {},
        "args": [],
        "showLog": true
    }
    
  12. ajouter des points d'arrêt au besoin et visiter http://localhost:8080 nouveau. L'exécution devrait s'arrêter lorsqu'un point de rupture est atteint, les variables devraient être listées dans la section variables du code VS, et la pile d'appels devrait être dans la section pile d'appels.

pour obtenir de l'aide générale sur le débogage du code Go dans le VS Code (ne fonctionne pas avec App Engine), voir https://github.com/Microsoft/vscode-go/wiki/Debugging-Go-code-using-VS-Code.

9
répondu Tyler Bui-Palsulich 2018-04-10 20:24:59

Oui, c'est dépassé. La page d'où vous venez ne sort pas. vous pouvez exécuter

go get github.com/GoogleCloudPlatform/golang-samples/tree/master/appengine/helloworld/...

si

1
répondu Victor Oliveira 2018-03-16 21:29:22