Tutoriel Hello World qui montre comment configurer VS Code pour déboguer le code Golang App Engine avec Visual Studio (alias VScode)
Cela utilise le code Helloworld de la documentation AppEngine:
go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git
sur un Mac exécutant osX 10.13.3.
J'ai testé le code et le serveur fonctionne localement. J'essaie de comprendre comment entrer le code avec le débogueur afin que je puisse 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 obsolètes sur la base des mises à jour de Golang (par exemple, passer à Gcloud, -go_debugging flag et changement de structure de répertoire):
https://medium.com/@dbenque/debugging-golang-appengine-module-with-visual-studio-code-85b3aa59e0f
Voici les étapes que j'ai suivies:
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'exécuter le débogueur:
dev_appserver.py --go_debugging=true app.yaml
ps aux | grep _go_app
dlv attach <#using the PID from the server binary>
Delve s'attache avec succès au binaire.
Lorsque je démarre la session de débogage , la barre de progression bleue n'arrête jamais de scanner horizontalement.
La barre latérale VARIABLE n'est jamais remplie avec les variables dans hello.go
Le point d'arrêt est défini sur hello.go: ligne 21
Le terminal Debug 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 la configuration 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,
}
]
}
Voici les versions que j'ai installées:
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
ÉDITER###########################
$ 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
Lorsque je démarre le débogueur, REPL montre:
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 ne se connecte jamais à Delve car il attend de se connecter au serveur Delve distant à 127.0.0.1:2345
. Si vous dlv attach
en mode sans tête, en écoutant à la bonne adresse, vous devriez pouvoir, espérons-le, vous connecter.
Les étapes ci-dessous décrivent comment déboguer une application Go App Engine exécutée avec dev_appserver.py
et aucun autre outil/assistant. Cependant, lorsque vous apportez des modifications à votre code Go, dev_appserver.py
recompile et redémarre l'application, en modifiant le PID Delve à déboguer. http://github.com/dbenque/delveAppengine peut aider à maintenir Delve attaché au bon processus. Voir ici pour un tutoriel.
go get -u -d github.com/directmeasure/VScodeDebugGoAppEngine.git
cd $GOPATH/src/src/github.com/GoogleCloudPlatform/golang-samples/appengine/helloworld
Remarque: si votre GOPATH a plusieurs entrées, cd
dans le répertoire go get
téléchargé sur.
Démarrez le serveur de développement App Engine:
dev_appserver.py --go_debugging=true app.yaml
Trouvez le PID du processus Go:
ps aux | grep _go_app
Démarrez le serveur Delve (sélectionnez n'importe quel port disponible sur votre système):
dlv --headless -l "localhost:2345" attach $GO_APP_PID
Créez une entrée "Aller: Se connecter au serveur":
Remarque: ce n'est qu'un modèle - vous pouvez le modifier plus tard.
Personnalisez la configuration pour pointer vers le port que vous avez spécifié lors du démarrage de Delve. Voici ma configuration complète:
{ "nom": "Lancer", "taper": "aller", "demander": "lancer", "mode": "débogage", "remotePath": "", "port": 2345, "Host": "127.0.0.1", "programme": "$ {fileDirname}", "env": {}, "args": [], "showLog": true }
Pour obtenir une aide générale sur le débogage du code Go dans VS Code (non exécuté avec App Engine), voir https://github.com/Microsoft/vscode-go/wiki/Debugging-Go-code-using-VS-Code .
Oui, c'est obsolète. La page dont vous sortez n'existe pas. Au lieu de cela, vous pouvez exécuter
go get github.com/GoogleCloudPlatform/golang-samples/tree/master/appengine/helloworld/...