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": [] } ] }
댓글 없음:
댓글 쓰기