douxie9471
2018-03-16 21:22
浏览 115
已采纳

如何为Golang和AppEngine设置VScode调试会话?

VScodeDebugGoAppEngine

Hello World tutorial that shows how to setup VS Code to debug Golang App Engine code with Visual Studio (aka VScode )

This is using using the Helloworld code from AppEngine documentation:

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

on a Mac running osX 10.13.3.

I've tested the code and the server works locally. I'm trying to figure out how to enter into the code with the debugger so I can learn how to use the debugger on other projects.

These were the best instructions I could find for using VScode with GAE but they seem to be outdated based on updates to Golang(e.g. switch to Gcloud, -go_debugging flag and change of directory structure):
https://medium.com/@dbenque/debugging-golang-appengine-module-with-visual-studio-code-85b3aa59e0f

Here are the steps I took:

set up Environment

  • added to .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 . 
    

How I have attempted to get debugger to run:

start local server .

dev_appserver.py --go_debugging=true app.yaml

attach local binary to Delve

 ps aux | grep _go_app 

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

Delve successfully attaches to the binary.

When I start the Debug session, the blue progress bar never stops scanning horizontally.

The VARIABLE sidebar is never populated with the variables in hello.go

The Breakpoint is set at hello.go: line 21

The Debug REPL terminal displays:

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  

Here is the launch.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,
    }
    ]
}

Here are the versions I have installed:

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

EDIT###########################

$ 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

When I start the Debugger, REPL shows:

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条回答 默认 最新

相关推荐 更多相似问题