Visual studio Code base directory for delve debugger
visual studio code 에서 F5 로 debugger 를 실행하는 것은 dlv debug 가 가능한 path 를 root 로 놓고 하면 된다.(File > Open Folder)c:\go\src\cmd> dlv debug를 해서 성공하면 (dbg) prompt 가 보인다.
이런 경우에 open folder 에서 "c:\go\src\cmd" 를 열고, f5 를 누르면 된다.
delve compile for windows
Windows 에서 delve 를 build 하는 법은 아래를 참고하자.Visual Studio Code 에서 사용할 수 있도록 delve.exe 는 %GOROOT%\bin 에 copy 해 놓자.
Visual Studio Code 설정
절차
- VS code 설치
- Go plugin 설치
- Go plugin 에서 사용되는 tools 들 설치
- launch.json 작성
- settings.json 작성
- Open go project
- F5 로 debugger 실행
Visual Studio Code 설치
아래 경로에서 download 할 수 있다. 되도록 영문으로 설정하자. 한글은 command palette (alt+ctrl+p) 을 사용하기 불편하다.command palette 에서 '언어' 를 치면 언어설정을 할 수 있는 메뉴를 찾을 수 있다.
Go plugin 설치
- visual studio code 실행
- alt+ctrl+p > Extensions: Install Extension > Go 설치
- extension github page : 자세한 사용방법이 나와있다.
plugin 에서 사용되는 Tools
Go plugin 에서 사용되는 tools 들이 여러가지 이다. 이것들을 다운로드 하자.환경변수 설정 및 tools 설치
참고로 GOPATH 를 golang 이 깔려있는 folder 로 선택하자. (여기선 d:\go)set GOPATH=d:\go set path=%path%;c:\Program Files (x86)\Git\bin\;%GOPATH%\bin; go get -u -v github.com/nsf/gocode go get -u -v github.com/rogpeppe/godef go get -u -v github.com/golang/lint/golint go get -u -v github.com/lukehoban/go-outline go get -u -v sourcegraph.com/sqs/goreturns go get -u -v golang.org/x/tools/cmd/gorename go get -u -v github.com/tpng/gopkgs go get -u -v github.com/newhook/go-symbols go get -u -v golang.org/x/tools/cmd/guru
launch.json
F5 를 누르면 .vscode/launch.json 를 작성하라고 나온다. 물론 직접 만들어서 작성해도 된다. dlv debug 를 위한 세팅은 아래 처럼 해놨다.godep go install 을 사용하는 경우에는 godep path 로 나온 항목을 GOPATH 에 넣어줘야 한다.(참고)
env 를 통해서 원하는 환경변수를 설정 할 수 있다. 그런데 여러개를 설정할 수 없다. ';' 로 구분지어서 넣었는데, error 가 없어서 잘되는 것인줄 알았는데, 잘 모르겠다. GOPATH 는 잘 되었지만, PATH 의 설정은 뭔가 문제가 있었다.
그러니 필요한 환경변수는 "시스템 속성 > 환경변수" 에서 설정해 놓자.
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}",
"env": {
"GOPATH": "d:/mine/programming/go/ethereum/src/github.com/ethereum/go-ethereum/Godeps/_workspace;d:/mine/programming/go/ethereum/",
"PATH" : "%path%;c:/Program Files (x86)/Git/bin/;%GOPATH%/bin;%GOROOT%/bin;d:/Program Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/bin"
},
"args": []
}
]
}
intellisense(ctrl + space) 로 어떤 key 값이 가능한지 알 수 있다.
Options, settings.json
plugin 의 options 을 조정할 수 있다. .vscode/settings.json 을 만들어서 사용하면 된다.{
"go.buildOnSave": true,
"go.lintOnSave": true,
"go.vetOnSave": true,
"go.buildTags": "",
"go.buildFlags": [],
"go.lintFlags": [],
"go.vetFlags": [],
"go.coverOnSave": false,
"go.useCodeSnippetsOnFunctionSuggest": false,
"go.formatOnSave": true,
"go.formatTool": "goreturns",
"go.goroot": "d:/Go",
"go.gopath": "d:/mine/programming/go/ethereum",
"go.gocodeAutoBuild": false
}
Open project
- File -> Open folder -> go project 를 선택
- breakpoint 지정 : 마우스로 왼쪽 line number 를 클릭
- f5 로 실행
- Debugging in Visual Studio Code
Debugging 설정
debug symbol 문제
내 경우에는 여러가지를 깔다보니, gcc 버전이 안맞아서 생긴 듯 했다. (추측) delve 를 만들때 사용한 gcc 를 이용해서 작업하니 잘 돌아갔다.
# github.com/ethereum/go-ethereum/cmd/geth github.com/ethereum/go-ethereum/crypto/secp256k1(.text): ___chkstk_ms: not defined github.com/ethereum/go-ethereum/crypto/secp256k1(.text): undefined: ___chkstk_ms exit status 2
Linux 에서 설정하기
Linux 에서 go-ethereum 설치
- go-ethereum 빌드 하기 > Linux Ubuntu 14.04 에서 빌드
를 참고하자.
delve build on linux
- http://i5on9i.blogspot.kr/2016/04/windows-delve.html > delve build on Linux
를 참고하자.
Visual Studio Code
visual studio code 의 설치는 windows 와 같다. 단순히 한가지 차이가 있다면 launch.json 의 작성이다.- VS code 설치
- Go plugin 설치
- Go plugin 에서 사용되는 tools 들 설치
- launch.json 작성
- settings.json 작성
- Open go project
- F5 로 debugger 실행
launch.json
linux 에서는 GOPATH 를 설정하는데에 bash 에서는 아래처럼 GOPATH 에 2개 이상의 path 를 넣을 수 있다.GOPATH=/home/username/go/src/github.com/ethereum/go-ethereum/Godeps/_workspace:$GOPATH
여하튼 그래서 어쩔 수 없이 .bashrc 에서 GOPATH의 설정을 해주었다. 기본적으로 이작업이 불필요할 수 있지만 godep 등을 활용해서 build 를 했던 경우라면 필요하다.(godep go install 은 GOPATH=`godep path`:$GOPATH / go install 로 대체할 수 있다. : 참고)
export GOPATH=/home/namh/go:/home/namh/go/src/github.com/ethereum/go-ethereum/Godeps/_workspace
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceRoot}",
"env": {
},
"args": []
}
]
}

댓글 없음:
댓글 쓰기