Я пытаюсь отладить код go-ethereum внутри кода Visual Studio.До сих пор я смог собрать отладочную версию двоичных файлов, изменив Makefile и запустив проект в VS Code с установленным расширением «Rich Go».
Запись в MakeFile:
debug:
# https://ethereum.stackexchange.com/questions/41489/how-to-debug-geth-with-delve?rq=1
@echo building debug version
build/env.sh go build -o ./build/bin/geth -gcflags=all='-N -l' -v ./cmd/geth
@echo end building debug version
@echo "Run \"$(GOBIN)/geth\" to launch geth."
Мой файл launch.json:
{
"name": "Launch",
"type": "go",
"request": "launch",
"mode": "exec",
"trace": "verbose",
"remotePath": "${workspaceRoot}",
"port": 2345,
"host": "127.0.0.1",
"program": "${workspaceRoot}/build/bin/geth",
"sources": "${workspaceRoot}",
"args": [
],
"showLog": true
},
Я могу запустить проект внутри кода Visual Studio, но всеТочки останова игнорируются.
Creating on: /Users/work/go/efsn/core/blockchain.go (/Users/work/go/efsn/core/blockchain.go) :256
Error on CreateBreakpoint: could not find /Users/work/go/efsn/core/blockchain.go:256
Это распечатка с моей консоли отладки:
Verbose logs are written to:
/var/folders/f0/8kqy01l55s3f5b642wc2w47w0000gp/T/vscode-go-debug.txt
10:18:57 AM, 11/14/2018
InitializeRequest
InitializeResponse
Using GOPATH: /Users/work/go
Current working directory: /Users/work/go/efsn/build/bin
Running: /Users/work/go/bin/dlv exec /Users/work/go/efsn/build/bin/geth --headless=true --listen=127.0.0.1:2345 --api-version=2 --log=true --
API server listening at: 127.0.0.1:2345
time="2018-11-14T10:18:57-05:00" level=info msg="launching process with args: [/Users/work/go/efsn/build/bin/geth]" layer=debugger
InitializeEvent
SetBreakPointsRequest
All cleared
Creating on: /Users/work/go/efsn/core/blockchain.go (/Users/work/go/efsn/core/blockchain.go) :256
Error on CreateBreakpoint: could not find /Users/work/go/efsn/core/blockchain.go:256
All set:[null]
SetBreakPointsResponse
ConfigurationDoneRequest
ContinueRequest
ContinueResponse
time="2018-11-14T10:18:58-05:00" level=debug msg=continuing layer=debugger
INFO [11-14|10:18:59.171] Maximum peer count ETH=25 LES=0 total=25
INFO [11-14|10:18:59.184] Starting peer-to-peer node instance=Geth/v1.8.16-unstable/darwin-amd64/go1.11.2
Я установил следующие пакеты, необходимые для расширения Rich Go:
go get -u github.com/derekparker/delve/cmd/dlv
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
Любая помощь будетс благодарностьюСпасибо