1. 程式人生 > >以太坊(go-ethereum)編譯除錯環境搭建

以太坊(go-ethereum)編譯除錯環境搭建

以下步驟都是在MacOs上操作的,但同樣適合Ubuntu,只是有幾個小點有所不同,我會標註出來

編譯

1. Go環境搭建

    Mac: (brew是一個類似ubuntu apt-get的工具,用來在終端安裝軟體的)
brew update && brew upgradebrew install gitbrew install mercurialbrew install go    Ubuntu:sudo apt-get install gitsudo apt-get install golang-go    Go程式碼的package很多都是git專案,所以上面安裝git

    驗證go

go    如果提示命令找不到就需要配置PATHvim ~/.profile    加入如下配置並重新登入以讓配置生效export GOROOT=/usr/local/goexport PATH=$GOROOT/bin:$PATH

2. go-ethereum下載及編譯

編譯完成你會在build/bin/下找到二進位制執行檔案geth

除錯

下載visual studio code

    Visual Studio Code是一個很強悍的閱讀除錯程式碼的IDE,強力推薦
    這個網頁有mac版和ubuntu版本,選擇相應的平臺下載

設定GOPATH

     這裡需要注意,GOPATH不能設定為go-ethereum目錄,而是go-ethereum/build/_workspace,為啥是這個目錄,檢視build/env.sh就知道了#!/bin/sh
set -eif [ ! -f "build/env.sh" ]; then    echo "$0 must be run from the root of the repository."    exit 2fi# Create fake Go workspace if it doesn't exist yet.workspace="$PWD/build/_workspace"root="$PWD"if [ ! -L "$ethdir/go-ethereum" ]; then    mkdir -p "$ethdir"    cd "$ethdir"    ln -s ../../../../../. go-ethereum
    cd "$root"fi# Set up the environment to use the workspace.GOPATH="$workspace"export GOPATH# Run the command inside the workspace.cd "$ethdir/go-ethereum"PWD="$ethdir/go-ethereum"# Launch the arguments with the configured environment.exec "[email protected]"    也就是說編譯的時候GOPATH被臨時切換到go-ethereum/build/_workspace目錄了。其實,還可以通過依賴庫來驗證,編譯完成後檢視go-ethereum/build/_workspace目錄是否有依賴庫ItleaksdeMacBook-Pro:build itleaks$ pwd/Users/itleaks/projects/go-ethereum/build/_workspaceItleaksdeMacBook-Pro:build itleaks$ tree.├── bin│   ├── dlv│   ├── go-outline└── src    │   ├── MichaelTJones    │   │   └── walk    │   │       ├── README.md    │   │       ├── path_plan9.go    │   │       ├── path_unix.go    │   │       ├── path_windows.go    │   │       ├── symlink.go    │   │       ├── symlink_windows.go    │   │       ├── walk.go    │   │       └── walk_test.go    │   ├── acroca    │   │   └── go-symbols    │   │       ├── LICENSE    │   │       ├── README.md    │   │       └── main.go    │   ├── derekparker│   ├── ethereum    │   │   └── go-ethereum -> ../../../../../.    │   ├── golang上面可以看出,確實存在。所以開始配置GOPATHvim ~/.profile新增ItleaksdeMacBook-Pro:go-ethereum itleaks$ cat ~/.profileexport GOPATH=$HOME/projects/go-ethereum/build/_workspace

下載visual studio code go除錯工具

 1)下載dlv

    有了這個工具才能配置go除錯

2)安裝GO外掛

    安裝完成後點選重新載入

3)匯入程式碼


4) 配置debug    

    然後就會生成launch.json

5)自動安裝其他除錯依賴工具

    關閉,重新進入該專案    這次會有以下提示,點選install後就會安裝除錯需要的工具

6)除錯原始碼

    進入cmd/geth/main.go新增斷點,必須進入這個檔案,然後按F5即可進入除錯


附錄:

同步主網:

geth --networkid 15 --cache=1024 --fast --rpc --rpcaddr 0.0.0.0 --rpcport 8545 --rpcapi personal,db,eth,net,web3,miner --nodiscover

--fast是指只同步區塊頭,不同步區塊,速度很快很多

/********************************* 本文來自CSDN博主"愛踢門"******************************************/